字典是python语言中唯一的映射类型。这种映射类型由键(key)和值(value)组成,是“键值对”的无序可变序列
定义字典时,每个元组的键和值用冒号隔开,相邻元素用逗号分隔,所有的元组放在一对大括号“ { ”和“ } ”中。字典中的键可以是python中任意不可变类型,例如:整数/实数/复数/字符串/元组等。键不能重复,而值可以重复。一个键只能对应一个值,但多个键可以对应相同的值。例如:
{1001:'alice',1002'tom',1003:'emlily'}
{(1,2,3):'a',65.5,'b'}
{'alice':95,'beth':82,'tom':65.5,'emliy':95}
>>> a={'alice':95,'beth':82,'tom':65.5,'emliy':95}
>>> a
{'alice': 95, 'beth': 82, 'tom': 65.5, 'emliy': 95}
也可以创建空字典
>>> a={}
>>> a
{}
>>> a=dict(zip(['one','two','three'],[1,2,3]))
>>> a
{'one': 1, 'two': 2, 'three': 3}
1.以键值对创建字典
>>> b=dict(one=1,two=2,three=3)
>>> b
{'one': 1, 'two': 2, 'three': 3}
2.以键值对形式的列表建立字典
>>> c=dict([('one',1),('two',2),('three',3)])
>>> c
{'one': 1, 'two': 2, 'three': 3}
3.以键值对形式的元组创建字典
>>> d=dict((('one',1),('two',2),('three',3)))
>>> d
{'one': 1, 'two': 2, 'three': 3}
4.创建空字典
>>> e=dict()
>>> e
{}
5.dict.fromkeys(对象(,可选初值))方法创建列表
对象为可迭代对象;
如果不填写初值,则默认None;
>>> d=dict.fromkeys("first")
>>> d
{'f': None, 'i': None, 'r': None, 's': None, 't': None}
>>> d['f']=100
>>> d['s']=101
>>> d
{'f': 100, 'i': None, 'r': None, 's': 101, 't': None}
>>> f=dict.fromkeys("first",100)#初值100
>>> f
{'f': 100, 'i': 100, 'r': 100, 's': 100, 't': 100}
(1) 与列表和元组类似,可以使用下标的方法来访问字典中的元素。字典的下标是键,若使用的键不存在,则提示异常错误。例如:
>>> a={'alice':95,'beth':82,'tom':65.5,'emliy':95}
>>> a[tom]
Traceback (most recent call last):
File "" , line 1, in <module>
a[tom]
NameError: name 'tom' is not defined
>>> a['tom']
65.5
(2)使用字典对象的get()方法获取指定“ 键 ”对应的“ 值 ”。get()方法的一般形式为:dict.get(key,default=None)
其中:key是指在字典中要查询的“ 键 ”,default是指指定的“ 键 ”值不存在时返回的值。该方法相当于一条if…else…语句,如果参数key在字典中则返回key对应的value值,字典将返回dict[key];如果参数key不在字典中则返回参数default;如果没有指定default,默认值为None。例如:
>>> a['tom']
65.5
>>> a.get('alice')
95
>>> a.get('al','address')
'address'
>>> a.get('al')
>>> print(a.get('al'))
None
(1)字典没有预定义大小的限制,可以随时向字典添加新的键值对,或者修改现有键所关联的值。添加和修改的方法相同,都是使用“字典变量名[键名]=键值”的形式。区分究竟是添加还是修改,需要看键名与字典中的键名是否有重复,若该“键”存在,则表示修改该“键”的值;若不存在,则表示添加一个新的“键值对”,也就是添加一个新的元素。例如:
>>> a['brth']=79 #添加
>>> a
{'alice': 95, 'beth': 82, 'tom': 65.5, 'emliy': 95, 'brth': 79}
>>> a['beth']=79 #修改
>>> a
{'alice': 95, 'beth': 79, 'tom': 65.5, 'emliy': 95, 'brth': 79}
(2)使用update()方法将另一个字典的“键值对”一次性全部添加到当前字典对象。如果当前字典中存在着相同的“键”,则以另一个字典中的“值”为准对当前字典进行更新。例如:
>>> a
{'alice': 95, 'beth': 79, 'tom': 65.5, 'emliy': 95, 'brth': 79}
>>> b={'eric':98,'tom':82}
>>> a.update(b)
>>> a
{'alice': 95, 'beth': 79, 'tom': 82, 'emliy': 95, 'brth': 79, 'eric': 98}
(1)使用del命令删除字典中指定“键”对应的元素。例如:
>>> a
{'alice': 95, 'beth': 79, 'tom': 82, 'emliy': 95, 'brth': 79, 'eric': 98}
>>> del a['beth']
>>> a
{'alice': 95, 'tom': 82, 'emliy': 95, 'brth': 79, 'eric': 98}
(2)使用字典对象的pop()方法删除并返回指定“键”的元素。例如:
>>> a
{'alice': 95, 'tom': 82, 'emliy': 95, 'brth': 79, 'eric': 98}
>>> a.pop('alice')
95
>>> a
{'tom': 82, 'emliy': 95, 'brth': 79, 'eric': 98}
(3)使用字典对象的popitem()方法删除字典元素。由于字典是无序的,popitem()实际删除的是一个随机的元素。例如:
>>> a
{'tom': 82, 'emliy': 95, 'brth': 79, 'eric': 98}
>>> a.popitem()
('eric', 98)
>>> a
{'tom': 82, 'emliy': 95, 'brth': 79}
(4)使用字典对象的clear()方法删除字典的所有元素。例如:
>>> a
{'tom': 82, 'emliy': 95, 'brth': 79}
>>> a.clear()
>>> a
{}
使用del命令删除字典。例如:
>>> a
{}
>>> del a
>>> a
Traceback (most recent call last):
File "" , line 1, in <module>
a
NameError: name 'a' is not defined
>>> a={'alice':95,'beth':82,'tom':65.5,'emliy':95}
>>> a.keys()
dict_keys(['alice', 'beth', 'tom', 'emliy'])
>>> a.values()
dict_values([95, 82, 65.5, 95])
>>> a.items()
dict_items([('alice', 95), ('beth', 82), ('tom', 65.5), ('emliy', 95)])
>>> d={'one':{'sum':100,'stu':20},'two':{"sum":120,'stu':33}}
>>> d['one']
{'sum': 100, 'stu': 20}
>>> d['one']['sum']
100
>>> d['two']['stu']
33
>>> d={'one':[100,20],'two':[120,33]}
>>> d['one'][1]
20
>>> d={'f': 100, 'i': 12, 'r': 10, 's': 50, 't': 110}
>>> b={v:k for k,v in d.items()}
>>> b
{100: 'f', 12: 'i', 10: 'r', 50: 's', 110: 't'}
>>> b={v:k for k,v in d.items() if v>100}
>>> b
{110: 't'}