字典等同于Java
中的容器。与JavaScript
中的Json
对象更相似。由键值对组成,key
和value
用冒号:
分割,每个键值对之间用逗号,
分割,整个字典包括在花括号{}
中。键必须是唯一的,值不是。键必须不可变,所以键可以是数字,字符串或元组,但不能是列表。
1.字典的创建
①语法:dict = {key1 : value1, key2 : value2, key3 : value3 }
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> print(dict1)
{'name': 'yanxueer', 'age': '24'}
②通过dict()
映射其他字典或键/值序列对创建字典.
# 映射其他字典
>>> dict2 = dict(dict1)
>>> dict2
{'name': 'yanxueer', 'age': '24'}
# 通过列表和元组创建
>>> dict3 = dict([('name','yan'),('age','24')])
>>> dict3
{'name': 'yan', 'age': '24'}
2.获取字典的值
①语法:dict[key]
>>> dict1["name"]
'yanxueer'
当然也需要像列表中注意索引那样,也需要保证key
的存在,否则就会出错。
>>> dict1["Age"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Age'
我们应该尽量避免系统中出现可能会出错的代码。所以get()
方法是一个更好的选择。
② get()
方法来获取值,如果key
存在于字典中则返回key
的值,否则默认返回None
,当然你可以指定其在不存在时返回什么值。
>>> dict1.get("name")
'yanxueer'
>>> dict1.get("Age")
# 默认为'None'
>>> print(dict1.get("dfd"))
None
# 设置当不存在时返回为'1'
>>> dict1.get("Age",1)
1
3.修改和添加字典
① 修改字典可以通过key
值来获取字典value
值之后直接修改
>>> print(dict1)
{'name': 'yanxueer', 'age': '24'}
>>> dict1["age"] = 25
>>> print(dict1)
{'name': 'yanxueer', 'age': 25}
② setdefault()
:如果 key
在 字典中,返回对应的值。
>>> dict1 = {'name': 'yanxueer'}
>>> dict1.setdefault("name")
'yanxueer'
如果不在字典中,则插入 key
及设置的default
,并返回设置的default
,default
默认值为 None
。
# 默认值
>>> dict1.setdefault("age")
>>> dict1
{'name': 'yanxueer', 'age': None}
# 自行设置值
>>> dict1.setdefault("sex",1)
1
>>> dict1
{'name': 'yanxueer', 'age': None, 'sex': 1}
③ 也和修改字典的方式一样,当key
值存在为修改,不存在则为添加
>>> print(dict1)
{'name': 'yanxueer', 'age': 25}
>>> dict1["sex"] = "0"
>>> print(dict1)
{'name': 'yanxueer', 'age': 25, 'sex': '0'}
4.删除字典
① del
或del()
删除字典的键和字典本身
# 删除键 'name'
>>> del dict1['name']
>>> dict1
{'age': 25, 'sex': '0'}
del dict
删除字典
>>> del dict1
>>> dict1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'dict1' is not defined
② clear()
清空字典
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> dict1
{'name': 'yanxueer', 'age': '24'}
>>> dict1.clear()
>>> dict1
{}
③ pop()
:删除字典给定键 key 所对应的值,返回值为被删除的值。
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> dict1.pop("age")
'24'
>>> dict1
{'name': 'yanxueer'}
key值必须给出否则就会报错。
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> dict1.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 argument, got 0
如果要删除的 key 不存在,则需要添加默认值,否则会报错。
>>> dict1
{'name': 'yanxueer'}
>>> dict1.pop("age")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'age'
>>> dict1.pop("age",24)
24
④ popitem()
:返回并删除字典中的最后一对键和值。
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> dict1.popitem()
('age', '24')
>>> dict1
{'name': 'yanxueer'}
如果字典已经为空,却调用了此方法,就报错。
>>> dict1.clear()
>>> dict1.popitem()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'
5.获取所有的key
或者value
① keys()
:以列表返回一个字典所有的键
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> dict1.keys()
dict_keys(['name', 'age'])
② values()
:以列表返回字典中的所有值
>>> dict1 = {"name": "yanxueer", "age": "24"}
>>> dict1.values()
dict_values(['yanxueer', '24'])
6.字典的嵌套
上面我们知道字典的key
可以时任何不可变类型,那么它的value
可以为任意类型,包括字典本事,字典的value
为字典则就是字典的嵌套
dict = {key:{key:value}}
>>> dict1 = {"key":{"key":"value"}}
>>> dict1
{'key': {'key': 'value'}}
# 嵌套字典或者列表都是化整为零逐步分解
>>> dict1['key']['key']
'value'
字典的学习到此结束。
每日一言
好的习惯不会一天养成,也不会因为一天而废止,所以克己,律己。用耐心,决心,平常心去对待。
网友评论