字典(dict)
字典是Python中比较特别的一类数据类型,字典中的每个成员是以“键(key):值(value)”对的形式存在的。
字典以大括号“{}”包围的以“键:值”对方式声明和存在的结构数据。与列表最大的不同在于字典是无序的,其成员位置只有象征性,在字典中通过键来访问成员,而不通过其位置来访问该成员。
1、字典键的特性
字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
>>> adct = {'name':'kuenen','age':24, 'name':'tom'}
>>> adct
{'name': 'tom', 'age': 24}
>>> adct['name']
'tom'
2)键必须不可变类型,如数字、字符串、包含不可变对象的元组。
>>> bdct = {('name','age'):('kuenen',25)}
>>> bdct
{('name', 'age'): ('kuenen', 25)}
>>> cdct = {(['name','age']):(['kuenen',25])}
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
cdct = {(['name','age']):(['kuenen',25])}
TypeError: unhashable type: 'list'
2、字典的基本操作
(1)创建字典
创建空字典
>>> {} {} >>> dict() {} >>> adct = {'a':1,'b':2,'c':3} >>> adct {'c': 3, 'a': 1, 'b': 2}
(2)访问字典的值
>>> bdct = {'name':'kuenen','age':25}
>>> bdct['name']
'kuenen'
(3)修改字典的值
>>> bdct {'name': 'kuenen', 'age': 25} >>> bdct['age']= 27 >>> bdct {'name': 'kuenen', 'age': 27}
(4)添加键值对
>>> bdct {'name': 'kuenen', 'age': 27} >>> bdct['sex'] = 'man' >>> bdct {'name': 'kuenen', 'age': 27, 'sex': 'man'}
(5)删除字典
>>> bdct {'name': 'kuenen', 'age': 27, 'sex': 'man'} >>> del bdct['age'] # 删除键是'age'的item >>> bdct {'name': 'kuenen', 'sex': 'man'} >>> bdct.clear() # 清空字典所有条目 >>> bdct {} >>> del bdct # 删除字典 >>> bdct Traceback (most recent call last): File "<pyshell#36>", line 1, in <module> bdct NameError: name 'bdct' is not defined
3、字典内置方法
|
dict.clear() |
删除字典内所有元素 |
|
dict.copy() |
返回一个字典的浅复制 |
|
dict.fromkeys(seq,value) |
创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值,默认为None |
|
dict.get(key, default=None) |
返回指定键的值,如果值不在字典中返回default值 |
|
dict.items() |
以列表返回可遍历的(键, 值) 元组数组 |
|
dict.keys() |
以列表返回一个字典所有的键 |
|
dict.pop(key) |
删除k:v键值对 |
|
dict.popitem() |
从字典中删除任一k:v键值对,并返回它 |
|
dict.setdefault(key, default=None) |
和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default |
|
dict.update(dict2) |
把字典dict2的键/值对更新到dict里 |
|
dict.values() |
以列表返回字典中的所有值 |
示例代码:
>>> adct = {'name': 'kuenen', 'age': 25}
>>> bdct = adct.copy()
>>> bdct
{'name': 'kuenen', 'age': 25}
>>> cdct = dict.fromkeys('python')
>>> cdct
{'o': None, 't': None, 'y': None, 'n': None, 'p': None, 'h': None}
>>> ddct = dict.fromkeys(['python','java'],10)
>>> ddct
{'python': 10, 'java': 10}
>>> adct
{'name': 'kuenen', 'age': 25}
>>> adct.get('name')
'kuenen'
>>> adct.get('class')
>>> adct.get('class','None')
'None'
>>> adct.items()
dict_items([('name', 'kuenen'), ('age', 25)])
>>> for i in adct.items():
print(i)
('name', 'kuenen')
('age', 25)
{'name': 'kuenen', 'age': 25}
>>> adct.pop('name')
'kuenen'
>>> adct
{'age': 25}
>>> bdct
{'name': 'kuenen', 'age': 25}
>>> bdct.popitem()
('name', 'kuenen')
>>> bdct
{'age': 25}
>>> adct
{'age': 25}
>>> adct.setdefault('name')
>>> adct
{'name': None, 'age': 25}
>>> adct.setdefault('age')
25
>>> adct.setdefault('sex','man')
'man'
>>> adct
{'name': None, 'age': 25, 'sex': 'man'}
>>> bdct = {'a':1}
>>> adct.update(bdct)
>>> adct
{'a': 1, 'name': None, 'age': 25, 'sex': 'man'}
>>> adct.values()
dict_values([1, None, 25, 'man'])
4、字典遍历
(1)遍历字典的key
>>> adct {'a': 1, 'name': None, 'age': 25, 'sex': 'man'} >>> for key in adct.keys(): print(key) a name age sex
(2)遍历字典的value
>>> for value in adct.values():print(value) 1 None 25 man
(3)遍历字典的item
>>> for item in adct.items():print(item) ('a', 1) ('name', None) ('age', 25) ('sex', 'man')
(4)遍历字典的key-value
>>> for key,value in adct.items(): print(key,value) a 1 name None age 25 sex man
参考文档:
浙公网安备 33010602011771号