字典是Python中唯一的映射类型。映射类型对象里哈希值(键:key),和指向的对象(值:value),是一对多的关系,也就是
字典的元素分为两个部分,分别是键和值,一个键对应一个值,键不能够重复,值可以重复。
1.创建字典。
(1).字典是用大括号({})来包含元素的,基本创建就是直接赋值,键不能是元组或者列表,但是值可以是。
>>> D = {'a':1,'b':2,'c':3}<span style="white-space:pre"> </span> >>> D {'a': 1, 'b': 2, 'c': 3} >>> D = {'a':(1,2,3),'b':[1,2,3]}<span style="white-space:pre"> </span>#值为元组、列表 >>> D {'a': (1, 2, 3), 'b': [1, 2, 3]} >>> D = {[1,2]:1}<span style="white-space:pre"> </span>#键为列表,异常 Traceback (most recent call last): File "<pyshell#9>", line 1, in <module><span style="white-space:pre"> </span> D = {[1,2]:1} TypeError: unhashable type: 'list'
(2).可以用dict() 函数来创建,函数中传入一个元组(或者列表),元组(或者列表)里面包含多个有着对应关系的元组(或者列表),函数就会自动创建成字典类型。
(格式:dict() ()里面只要是能够表达对应关系的序列都可以)
>>> D = dict((['a',1],['b',2]))<span style="white-space:pre"> </span>#用元组,元组里面用列表来表达对应关系 >>> D {'a': 1, 'b': 2} >>> D = dict([('a',1),('b',2)]) >>> D {'a': 1, 'b': 2} >>> type(D) <class 'dict'>
(3)可以用fromkeys() 函数来创建,函数里面两部分内容,一是键,二是值,键可以用字符串、元组、列表等包含起来,值只能是一个值,然后函数
会把这个值赋给所有的键,值不存在默认为None。(格式:{}.fromkeys(keys,value) keys用序列包含起来,value 直接写上去就好)
>>> D = {}.fromkeys(('a','b'),2)<span style="white-space:pre"> </span>#元组包含键 >>> D {'a': 2, 'b': 2} >>> D = {}.fromkeys(['a','b'],1)<span style="white-space:pre"> </span>#列表包含键 >>> D {'a': 1, 'b': 1} >>> D = {}.fromkeys('abc',1)<span style="white-space:pre"> </span>#字符串包含键 >>> D {'a': 1, 'b': 1, 'c': 1} >>> D = {}.fromkeys('a')<span style="white-space:pre"> </span>#值默认为None >>> D {'a': None}
2.访问字典。
因为字典是映射关系,所以不存在索引值,想要访问的话只能够通过键来实现,通过键来找到键所对应的值,不能通过值找键,就是一对一的格式。
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D['a'] 1 >>> D['b'] 2 >>> D['c'] 3
有个比较容易混乱的,下面看起来像是用索引值来访问了,但是却不是这样的,此时1,2,3代表的是键!!!
>>> D = {1:'a',2:'b',3:'c'} >>> D {1: 'a', 2: 'b', 3: 'c'} >>> D[1] 'a' >>> D[2] 'b' >>> D[3] 'c'
3.删除字典。
单个删除字典元素。
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> del D['a'] >>> D {'b': 2, 'c': 3}
整个删除字典。
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> del D >>> D Traceback (most recent call last): File "<pyshell#66>", line 1, in <module> D NameError: name 'D' is not defined
清空字典的内容,让字典成为空字典。
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D.clear() >>> D {}
4.更新字典。
字典是可改变的,就如列表一样。
改变字典的值。
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D['a'] 1 >>> D['a'] = 4 >>> D {'a': 4, 'b': 2, 'c': 3}
如果改变字典的值时,该键不存在就会在字典中新加入该键和值。
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D['d'] = 4 >>> D {'d': 4, 'a': 1, 'b': 2, 'c': 3} >>> D['e'] = 0 >>> D {'d': 4, 'a': 1, 'e': 0, 'b': 2, 'c': 3}
5.有关函数。
len()
计算字典 键-值 个数。
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> len(D) 3
get()
get() 函数对字典dict中的键key,返回它所对应的值value,如果该键不存在字典中,则返回default的值,default默认为None(格式:dict.get(key,default=None) )
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D.get('a') 1 >>> D.get('e') >>> D.get('e',10) 10 >>> D
items()
items() 函数返回一个包含字典中键、值对元组的列表。(格式:dict.items() )
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D.items() dict_items([('a', 1), ('b', 2), ('c', 3)])
keys()
keys() 函数返回一个包含字典中键的列表。(格式:dict.keys() )
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D.keys() dict_keys(['a', 'b', 'c'])
values()
values() 函数返回一个包含字典中所有值的列表。(格式:dict.values() )
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D.values() dict_values([1, 2, 3])
pop()
pop() 函数删除字典中key以及对应的值,并返回,如果key不存在则返回default的值,如果default没指定值,则会异常。(格式:dict.pop(key,default) )
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D.pop('a') 1 >>> D {'b': 2, 'c': 3} >>> D.pop('e',1) 1 >>> D.pop('f') Traceback (most recent call last): File "<pyshell#116>", line 1, in <module> D.pop('f') KeyError: 'f'
popitem()
popitem() 函数随机删除并返回字典中一对键值。(格式:dict.popitems() )
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D.popitem() ('a', 1)
setdefault()
setdefault() 函数查找字典dict中的键key,返回它所对应的值value,如果该键不存在字典中,则返回default的值并且在字典中新增该键值,default默认为None。
(格式:dict.setdefault(key,default=None) )
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D.setdefault('a') 1 >>> D {'a': 1, 'b': 2, 'c': 3} >>> D.setdefault('e') >>> D {'a': 1, 'e': None, 'b': 2, 'c': 3} >>> D.setdefault('f',5) 5
update()
update() 函数将dict2的键值添加到原字典dict 中,如果有相同的键,则以dict2的为准。(格式:dict.update(dict2) )
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D1 = {'a':4,'e':5} >>> D1 {'a': 4, 'e': 5} >>> D.update(D1) >>> D {'a': 4, 'e': 5, 'b': 2, 'c': 3}
copy()
copy() 函数复制dict的内容。(格式:dict.copy() )
>>> D = {'a':1,'b':2,'c':3} >>> D {'a': 1, 'b': 2, 'c': 3} >>> D1 = D.copy() >>> D1 {'a': 1, 'b': 2, 'c': 3}