#字典是由多个键及其对应的值构成的对组成(也叫键/值对称为项){key:value}
下例中,名字是键,电话号码是值.
所以:
每个键和它的值之间用冒号":"隔开,项之间用逗号","隔开,而整个字典是由一对大括号括起来
其中,键为任何不可变类型
phonebook = {'Alice':'2341','Beth':'9102','Cell':'3258'}
1.dict函数
items = [('name','Gumby'),('age',42)] #补充:items为列表(列表的各个元素通过","分隔,写在方括号中)
d = dict(items)
>>> d
{'age': 42, 'name': 'Gumby'}
第二种用法
>>> d = dict(name = 'Gumy',age = 42)
>>> d
{'age': 42, 'name': 'Gumy'}
2.基本字典操作
len(d)返回d中项(键-值对)的数量
d[k]返回关联到键k上的值
d[k] = v 将值v关联到键k上
del d[k]删除键为k的项
k in d检查d中是否含有键为k的项
3.字典和列表的区别
键类型
自动添加
成员资格(表达式k in d(d为字典)查找的是键,而不是值).表达式v in l(l为列表)则用来查找值,而不是索引)
4.深拷贝和浅拷贝(和C++的类似,(C++原理:即浅拷贝过后,仍然公用一片内存,所以对一个所做的操作,对另一个也生效。而深拷贝则是另外的一片内存)
>>> from copy import deepcopy
>>> d = {}
>>> d['names'] = ['Alfred','Bertrand']
>>> c = d.copy()
>>> dc = deepcopy(d)
>>> c
{'names': ['Alfred', 'Bertrand']}
>>> d['names'].append('Clive')
>>> c
{'names': ['Alfred', 'Bertrand', 'Clive']}
>>> dc
{'names': ['Alfred', 'Bertrand']}
5.fromkeys
fromkeys方法使用给定的键建立新的字典,每个键默认对应的值为None
>>> {}.fromkeys(['name','age'])
{'age': None, 'name': None}
也可以直接调用dict的方法
>>> dict.fromkeys(['name','age'])
{'age': None, 'name': None}
>>> dict.fromkeys(['name','age'],'unknown')
{'age': 'unknown', 'name': 'unknown'}
6.update
updata方法可以利用一个字典更新另一个字典.提供的字典中的项会被添加到旧的字典中,若有相同的键则会进行覆盖
>>> d = {'title':'python web site','url':'http://www.python.org'}
>>> x = {'title':'langue'}
>>> d.update(x)
>>> d
{'url': 'http://www.python.org', 'title': 'langue'}
可以看到,由于键值'title'相同,则值被覆盖(替换)了