1、字典
Python中的字典可以理解为一种键值对的集合
键必须是唯一的,值可以重复
值可以取任何类型,但键必须是你不可变的类型,如字符串、数组或元组等
字典是可变的,因此可以增加、删除、修改字典中的键值对
2、字典创建
字典中键和值用:分割,每个键值对用,分割,整个字典包含在一个{}中,格式如下:
d={key1:value1,key2:value2,key3:value3}
也可以使用dict()创建一个空字典,或者用dict()将一个包含双值子序列的序列转换成一个字典。
>>> d={'zhangsan':1,'lisi':2,'wangwu':3}
>>> d
{'zhangsan': 1, 'lisi': 2, 'wangwu': 3}
>>> d={}
>>> d
{}
>>> d=dict()
>>> d
{}
>>> s=[['a','b'],['c','d'],['e','f']]
>>> d=dict(s)
>>> d
{'a': 'b', 'c': 'd', 'e': 'f'}
>>>
3、访问、添加和修改元素
使用类似字符串索引的方式来访问一个元素,与字符串的区别在于索引为字典的键,当索引不存在时,会报错(KeyError)
>>> d={'a':1,'b':2,'c':3}
>>> d
{'a': 1, 'b': 2, 'c': 3}
>>> d['a']
1
>>> d['c']
3
>>> d[1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 1
>>>
指定元素的键并赋予相应的值,若该键已经存在于字典中,那么该键对应的旧值会被取代,如果该键不在字典中,那么会将该键值对添加到字典
>>> d={'a':1,'b':2,'c':3}
>>> d['a']=10
>>> d['a']
10
>>> d
{'a': 10, 'b': 2, 'c': 3}
>>> d['d']=20
>>> d
{'a': 10, 'b': 2, 'c': 3, 'd': 20}
>>>
4、删除字典元素
使用del删除具有指定键的元素
具体语法为:del d[key]
>>> d
{'a': 10, 'b': 2, 'c': 3, 'd': 20}
>>> del d['d']
>>> d
{'a': 10, 'b': 2, 'c': 3}
>>>
**注意:如果不加索引会将字典的引用直接删除
如果想要删除字典中的所有元素,应使用clear()方法**
5、合并字典
使用update()可以将一个字典中的键值对复制到另一个字典中
>>> first={'a':1,'b':2,'c':3}
>>> first
{'a': 1, 'b': 2, 'c': 3}
>>> second={'c':4,'d':5}
>>> second
{'c': 4, 'd': 5}
>>> first.update(second)
>>> first
{'a': 1, 'b': 2, 'c': 4, 'd': 5}
>>> second
{'c': 4, 'd': 5}
>>>
注意:如果待添加的字典与待扩充的字典包含同样的键,新归入字典的值会取代原有的值
6、判断键是否在字典中
使用 in 判断一个键是否在字典中
>>> first
{'a': 1, 'b': 2, 'c': 4, 'd': 5}
>>> second
{'c': 4, 'd': 5}
>>> 'a' in first
True
>>> 5 in first
False
>>>
7、获取字典中的所有键
使用keys()可以获取字典中的所有键
>>> first
{'a': 1, 'b': 2, 'c': 4, 'd': 5}
>>> keys=first.keys()
>>> keys
dict_keys(['a', 'b', 'c', 'd'])
>>> type(first.keys())
<class 'dict_keys'>
>>> for x in list(first.keys()) :
... print(x," : ",first[x])
...
a : 1
b : 2
c : 4
d : 5
>>>
注意:在Python2中keys()会返回一个列表,但在Python3中则返回一个dict_keys的对象,该对象是键的迭代形式,对于大型字典非常有用,因为不需要时间和空间来创建返回的列表,当需要列表时可以使用list()转换
8、获取字典中的所有值
使用values()获取字典中的所有值
>>> first
{'a': 1, 'b': 2, 'c': 4, 'd': 5}
>>> values=first.values()
>>> values
dict_values([1, 2, 4, 5])
>>> type(values)
<class 'dict_values'>
>>> for x in list(values) :
... print(x,end=',')
...
1,2,4,5,
9、获取所有键值对
使用items()获取所有键值对
>>> first
{'a': 1, 'b': 2, 'c': 4, 'd': 5}
>>> items=first.items()
>>> items
dict_items([('a', 1), ('b', 2), ('c', 4), ('d', 5)])
>>> type(items)
<class 'dict_items'>
>>> for x in list(items) :
... print(x)
... type(x)
...
('a', 1)
<class 'tuple'>
('b', 2)
<class 'tuple'>
('c', 4)
<class 'tuple'>
('d', 5)
<class 'tuple'>
>>>
注意:每一个键值对以元组的形式返回
10、复制字典
由于字典是可变的,对字典内容进行修改会反映到与之相关联的变量名上,有时将一个字典复制到一个新的字典中进行相关操作,防止修改原来的字典,使用copy()可以复制一个字典
>>> first
{'a': 1, 'b': 2, 'c': 4, 'd': 5}
>>> copy_first=first.copy()
>>> first['b']=100
>>> first
{'a': 1, 'b': 100, 'c': 4, 'd': 5}
>>> copy_first
{'a': 1, 'b': 2, 'c': 4, 'd': 5}
>>>