字典这种类型的数据结构被称为‘映射’,字典是Python中唯一内建的映射类型。字典中的值没有特定的顺序都被存储在特定(不可重复)的键下。键是不可变的元素。
1. 创建字典
phonebook = {’Alice‘:’2341‘, ’Beth‘:’3654‘, ’Cecli‘:’7845‘}
1.1 dict类型(可以使用dict函数,通过其他映射或者(键,值)的序列创建字典)
items = [('age','42'), ('name','alex')]
d = dict(items) ===> d = {'age':'42', 'name':'alex'}
2. 字典的基本操作
len(d) 返回字典中项(键-值)的数量
d[k] 返回键K关联的值
d[k] = v 将值V关联到键K上
del d[k] 删除键为K的项
k in d 检查字典中是否含有键为K的项
3. 字典的格式化字符串
phonebook = {'Alice':'2341', 'Beth':'3654', 'Cecli':'7845'}
'Cecli phone number is %(Cecli)s' % phonebook
4. 字典的方法
4.1 clear (清除字典中所有的项,原地操作,无返回值)
d = {'name':'coloj', 'age':''22}
return_values = d.clear() ===> d = {}
print return_values ===> None (因为是原地操作,不会给其他变量赋值,所以没有返回值)
4.2 copy & deepcopy
copy(浅拷贝)
x = {'name':'alex', 'number': ['foo','lee','coll']}
y = x.copy()
y[number].remove('lee')
y[name] = 'Pee'
y ===> {'name':'Pee', 'number': ['foo','coll']}
x ===> {'name':'alex', 'number': ['foo','coll']}
deepcopy(深拷贝)
from copy import deepcopy
a = {'name': ['aaa','bbb','ccc']}
b = deepcopy(a)
b['name'].append('oio')
b ===> {'name': ['aaa','bbb','ccc','olo']}
a ===> {name': ['aaa','bbb','ccc']}
4.3 fromkey(使用给定的键创建新的字典)
dict.fromkey(['name','age'])
{'name':None,‘age’:None}
4.4 get(访问字典的项,在键有值的情况下返回值,没有值得情况下返回None.或者其他的自定义的返回值)
d.get('name', 'Not found') ====> Not found
4.5 has_key (Python3.*中已经去掉该函数,判断字典中是否含有特定的键)
4.6 items & iteritems
items( 将字典中所有的项一列表的形式返回)
phonebook = {’Alice‘:’2341‘, ’Beth‘:’3654‘, ’Cecli‘:’7845‘}
phonebook.items() ===> [('Alice','2341'),('Beth','3654'),('Cecli','7845')]
iteritems(将所有的项弄成一个迭代器,在Python3中没有该函数)
phonebook = {’Alice‘:’2341‘, ’Beth‘:’3654‘, ’Cecli‘:’7845‘}
list(phonebook.iteritems()) ===> [('Alice','2341'),('Beth','3654'),('Cecli','7845')]
4.7 popitem (类似于list.pop(),但是popitem弹出随机的项,可以一个一个移除并处理移除的项)
phonebook = {’Alice‘:’2341‘, ’Beth‘:’3654‘, ’Cecli‘:’7845‘}
phonebook.popitem()
('Beth', '3654')
phonebook = {’Alice‘:’2341‘, ’Cecli‘:’7845‘}
4.8 setdefault (类似get,能够获取到给定键的值 还可以在字典中不存在给定键的情况下设定相应的键值对)
d = {'x': 1}
d.setdefault('x') ===> 1
d.setdefault('y',2) ===> d = {'x':1, 'y':2}
4.9 keys & iterkeys
(keys类似items只不过这个是将字典所有的键作为列表返回)
phonebook = {’Alice‘:’2341‘, ’Beth‘:’3654‘, ’Cecli‘:’7845‘}
phonebook.keys() ===> ['Alice', 'Beth', 'Cecli']
(iterkeys类似于iteritems返回一个迭代器)
phonebook = {’Alice‘:’2341‘, ’Beth‘:’3654‘, ’Cecli‘:’7845‘}
list(phonebook.itekeys()) ===> ['Alice', 'Beth', 'Cecli']
4.10 pop (获得给定键的值,并将该键-值在字典中删除.弹出给定的键并返回该键的值。必须给键)
d = {'x':1, 'Y':2}
d.pop('x') ===>1
d = {'Y':2}
4.11 update (利用一个字典更新另外一个字典,假设后边的那个中有前边的一样的键,则用后边的键的值更新前边的键的值。扩展和更新的作用)
dict_u = {'a':1}
ditc_i = {'b':2}
ditc_u.update(dict_i) ===>dict_u = {'a':1, 'b':2}
w = {'a': '1'}
e = {'a': '2'}
e.update(w) ===> e = {'a': '1'}