字典dict是python中最最重要的内置数据结构,它是无序,可变的数据结构,k-v结构key是不可重复的
字典定义初始化
In [1]: d1={}
In [2]: d2=dict()
In [3]: d3={'a':1}
In [4]: d4=dict({'a':1})
In [5]: d3
Out[5]: {'a': 1}
In [6]: d4
Out[6]: {'a': 1}
#可以用可迭代的数据类型做定义
In [11]: d5=dict((('a',1),('b',2)))
In [12]: d5
Out[12]: {'a': 1, 'b': 2}
#字典的value可以定义任意数据类型
In [21]: d6={'a':2,'b':{1,2},'c':[1,2,3],'d':('tom','man'),'f':True}
In [22]: d6
Out[22]: {'a': 2, 'b': {1, 2}, 'c': [1, 2, 3], 'd': ('tom', 'man'), 'f': True}
字典数据访问
#d[key],存在则返回value,不存在则抛出keyError错误
In [21]: d6={'a':2,'b':{1,2},'c':[1,2,3],'d':('tom','man'),'f':True}
In [23]: d6['a']
Out[23]: 2
#get方法不会抛出错误,可以赋缺省值
In [24]: d6.get('f')
Out[24]: True
In [25]: d6.get('d')
Out[25]: ('tom', 'man')
In [26]: d6.get('g')
In [27]: d6.get('g',123)
Out[27]: 123
#setdefault,如果key存在则返回值,如果不存在key,则添加key,value为None,k-v都设置则添加该k-v对
In [29]: d6.setdefault('a')
Out[29]: 2
In [30]: d6.setdefault('a',3)
Out[30]: 2
In [31]: d6.setdefault('x',3)
Out[31]: 3
In [32]: d6
Out[32]: {'a': 2, 'b': {1, 2}, 'c': [1, 2, 3], 'd': ('tom', 'man'), 'f': True, 'x': 3}
字典修改
#d[key]=value,修改字典元素
In [35]: d6['a']
Out[35]: 2
In [36]: d6['a']=45
In [37]: d6['a']
Out[37]: 45
#增加元素update,元组后面必须有逗号,不然会抛出错误(可迭代对象)。直接跟一个字典
In [42]: d6.update((('z',1),))
In [48]: d6.update(({'z':1}))
#字典删除
#pop(key,[value]),当key存在时则删除该键值对并返回value,key不存在pop(key,value)返回该value,没有设置该默认value则抛出keyError异常
#键存在
In [49]: d6.pop('z')
Out[49]: 1
#key不存在
In [56]: d6.pop('xy')
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
in ()
----> 1 d6.pop('xy')
KeyError: 'xy'
In [57]: d6.pop('xy',45)
Out[57]: 45
#popitem,返回任意键值对
In [58]: d6.popitem()
Out[58]: ('x', 3)
In [59]: d6.popitem()
Out[59]: ('f', True)
#clear 清空整个字典
In [61]: d6.clear()
#del删除字典,可以删除整个字典,也可以删除字典的键值对
#删除字典
In [64]: d1
Out[64]: {'b': {1, 2}, 'c': [1, 2, 3], 'd': ('tom', 'man')}
In [65]: del d1
In [66]: d1
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
in ()
----> 1 d1
NameError: name 'd1' is not defined
#删除字典键值对
In [68]: del d1['b']
字典遍历:d.keys,d.values,d.items方法和直接遍历字典
#遍历字典的key
#第一种直接遍历字典,默认返回key
d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
for k in d:
print(k)
#第二种keys方法,会返回一个类似列表的数据结果
In [75]: d.keys()
Out[75]: dict_keys(['a', 'b', 'c', 'd'])
In [76]: type(d.keys())
Out[76]: dict_keys
for k in d.keys():
print(k)
#第二种items方法,items方法会一个列表元组包涵k-v对
In [78]: d.items()
Out[78]: dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4)])
In [77]: type(d.items())
Out[77]: dict_items
for k,v in d.items():
print(k)
#遍历value
for k in d:
print(d[k])
for v in d.values():
print(v)
for k,v in d.items():
print(v)