Python学习笔记(八)字典相关
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
1 dic = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必;值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
1 dict = {'Alice': '2341', 'Beth': '9102', 121: 111}
访问字典里的值
1 >>> dic = {'name':'eric', 'age':21, 'class':'first'}
2 >>> dic
3 {'age': 21, 'class': 'first', 'name': 'eric'}
4 >>>
5 >>> print(dic['age'])
6 21
7 >>> print(dic['name'])
8 eric
9
10
11 ##用字典里没有的键访问数据,会输出错误
12 >>> print(dic['aaa'])
13 Traceback (most recent call last):
14 File "<stdin>", line 1, in <module>
15 KeyError: 'aaa'
修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
1 >>> dic = {'name':'eric', 'age':21, 'class':'first'}
2 >>> dic['age'] = 18 ## update existing entry
3 >>> dic['class'] = 'three'
4 >>> dic['home'] = 'bj' ## Add new entry
5 >>> dic
6 {'age': 18, 'class': 'three', 'home': 'bj', 'name': 'eric'}
删除元素
可以删单一的元素也可以清空字典,清空只需一项操作。
1 >>> dic
2 {'age': 21, 'class': 'first', 'name': 'eric'}
3 >>> del dic['age']
4 >>> dic
5 {'class': 'first', 'name': 'eric'}
6 >>> dic.clear()
7 >>> dic
8 {}
9 >>> del dic
10 >>>
11 >>> dic
12 Traceback (most recent call last):
13 File "<stdin>", line 1, in <module>
14 NameError: name 'dic' is not defined
字典特点
①.dict[key] 形式返回键key对应的值value,如果key不在字典中会引发一个KeyError
②.in 、not in 形如:'name' in adict 有–>True,无–>False
③.字典不支持拼接和重复操作符(+,*)
④.不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
⑤.键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行
内置函数&方法
adict.keys() 返回一个包含字典所有KEY的列表
1 >>> dic = {'name':'eric', 'age':21, 'class':'first'}
2 >>> dic.keys()
3 dict_keys(['age', 'class', 'name'])
dict.values() 返回一个包含字典所有value的列表
1 >>> dic.values()
2 dict_values([21, 'first', 'eric'])
dict.items() 返回一个包含所有(键,值)元祖的列表
1 >>> dic.items()
2 dict_items([('age', 21), ('class', 'first'), ('name', 'eric')])
dict.fromkeys(seq, val=None) 创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None)
>>> xx = dict.fromkeys('1234','x')
>>> xx
{'1': 'x', '2': 'x', '3': 'x', '4': 'x'}
>>> xx = dict.fromkeys('1234',)
>>> xx
{'1': None, '2': None, '3': None, '4': None}
dict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)
1 >>> dic
2 {'age': 21, 'class': 'first', 'name': 'eric'}
3 >>> dic.get('age')
4 21
5 >>> dic.get('ax')
6 >>> s = dic.get('ax')
7 >>> s
8 >>> s = dic.get('ax','ooo')
9 >>> s
10 'ooo'
dict.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常
1 >>> dic
2 {'age': 21, 'class': 'first', 'name': 'eric'}
3 >>> dic.pop('age')
4 21
5 >>> dic
6 {'class': 'first', 'name': 'eric'}
7 >>> dic.pop('school','no')
8 'no'
9 >>> dic.pop('school')
10 Traceback (most recent call last):
11 File "<stdin>", line 1, in <module>
12 KeyError: 'school'
dict.setdefault(key, default=None) 和set()方法相似,但如果字典中不存在Key键,由 adict[key] = default 为它赋值
1 >>> dic
2 {'class': 'first', 'name': 'eric'}
3 >>> dic.setdefault('xx','bubu')
4 'bubu'
5 >>> dic
6 {'class': 'first', 'xx': 'bubu', 'name': 'eric'}
7 >>> dic.setdefault('zz')
8 >>> dic
9 {'class': 'first', 'zz': None, 'xx': 'bubu', 'name': 'eric'}
dict.update(bdict) 将字典bdict的键值对添加到字典adict中
1 >>> dic1 = {'a1', 'a2', 'a3', 'a4'}
2 >>> dic2 = {'b1', 'b2', 'b3', 'b4'}
3 >>> dic1.update(dic2)
4 >>> dic1
5 {'a1', 'b4', 'a4', 'b2', 'a2', 'a3', 'b3', 'b1'}
字典的遍历
1 >>> dic
2 {'a1': '11', 'a2': '22', 'a3': 33, 'a4': '44'}
3 >>> for key in dic.keys():
4 ... print(key)
5 ...
6 a1
7 a2
8 a3
9 a4
10 >>> for value in dic.values():
11 ... print(value)
12 ...
13 11
14 22
15 33
16 44
##以下方法不好,不建议使用
1 >>> for item in dic.items():
2 ... print(item)
3 ...
4 ('a1', '11')
5 ('a2', '22')
6 ('a3', 33)
7 ('a4', '44')
8 >>>
9 >>> for item, value in dic.items():
10 ... print(item, value)
11 ...
12 a1 11
13 a2 22
14 a3 33
15 a4 44