L'E

言必虑其所终!

导航

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

 

posted on 2016-09-07 21:20  L'E  阅读(115)  评论(0编辑  收藏  举报