您的位置:首页 > 其它

11.字典:当索引不好用时

2017-08-07 16:55 141 查看
字典:key–value

字典不是序列类型,它是映射类型


(1)创建字典
①
>>> dict = {}  #空字典
>>> dict
{}
②直接按照字典的格式定义
>>> dict1 = {'Adidas':'impossible is nothing','Nike':'just do it'}
>>> dict1
>{'Adidas': 'impossible is nothing', 'Nike': 'just do it'}
③用赋值:key=value,再dict()
>>> dict2=dict(Nick='just do it',Adidas='nothing is impossible')
>>> dict2
{'Nick': 'just do it', 'Adidas': 'nothing is impossible'}
④用map构成的元组,再dict()
>>> d3 = dict((('f',1),('A',2)))  #用map构成的元祖,再dict()
>>> d3
{'A': 2, 'f': 1}

书写格式:
- 大括弧{}
- key与value之间用冒号分开:
- 键值对之间用逗号,分开

(2)访问字典
>>> dict['Nike']   #通过key,获得value
'just do it'


fromkeys()函数:快速创建/修改字典

>>> dict1 = {}.fromkeys((1,2,3))
>>> dict1
{1: None, 2: None, 3: None}

>>> dict2 = {}.fromkeys((1,2,3),'number')
>>> dict2
{1: 'number', 2: 'number', 3: 'number'}

>>> dict3 = {}.fromkeys((1,2,3),('one','two','three'))
>>> dict3
{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}

>>> dict4 = {}.fromkeys((1,2,3),'one','two','three')  #报错


keys()

values()

items()

in或not in

get()

>>> Dict = {}.fromkeys(range(10),'YY')
>>> Dict
{0: 'YY', 1: 'YY', 2: 'YY', 3: 'YY', 4: 'YY', 5: 'YY', 6: 'YY', 7: 'YY', 8: 'YY', 9: 'YY'}
>>> Dict.keys()
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> Dict.values()
['YY', 'YY', 'YY', 'YY', 'YY', 'YY', 'YY', 'YY', 'YY', 'YY']

>>> #打印出字典的所有的key
>>> for ch in Dict.keys():
print ch

0
1
2
3
4
5
6
7
8
9
>>>

>>> #打印所有的key-value对
>>> for item in Dict.items():
print item

(0, 'YY')
(1, 'YY')
(2, 'YY')
(3, 'YY')
(4, 'YY')
(5, 'YY')
(6, 'YY')
(7, 'YY')
(8, 'YY')
(9, 'YY')

in或not in  判断key是否在字典Dict中
>>> 1 in Dict
True
>>> 11in Dict
False
>>>

get()函数,获得字典中制定key的value
>>> print(Dict.get(11))
None
>>> print(Dict.get(1))
YY


clear()函数

清空字典a,可以用下面两种方法:
a = {}
a.clear()  #一般我们选择此方法

因为:a = {}只是消除了a字典,并没有清除a的赋值,
而a.clear()全部都消除了,更加安全。
>>> a = {1:'one',2:'two'}
>>> b = a
>>> a = {}
>>> a
{}
>>> b   #只清楚了a,但是b没有清除
{1: 'one', 2: 'two'}

>>> a = {1:'one',2:'two'}
>>> b = a
>>> a.clear()
>>> a
{}
>>> b  #全部清除
{}


copy():浅拷贝、赋值=[/b]

>>> a = {1:'one',2:'two',3:'three'}
>>> b = a  #赋值
>>> c = a.copy()  #浅拷贝

>>> b   #赋值和浅拷贝后,b、c都等于a
{1: 'one', 2: 'two', 3: 'three'}
>>> c
{1: 'one', 2: 'two', 3: 'three'}

>>> id(a)
42481592L
>>> id(b)
42481592L
>>> id(c)
38755320L
【重点注意】
赋值:a与b指向相同的内容(id相同),只是名字不同而已,
如果a改变,则b改变;同理,b改变,a也改变
浅拷贝:c与a的id都不同,内容相互不影响
>>> b[4] = 'four'  #往b中加入(4,'four')
>>> b
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
>>> a   #那么,a也随之改变
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
>>> c   #但是c不改变
{1: 'one', 2: 'two', 3: 'three'}
>>>


pop(): 给定一个key,弹出对应的value,并删除该key-value对

>>> a.pop(2)  #给定一个key,弹出对应的value
'two'


popitem():随机在字典中弹出key-value对

setfault():

>>> c
{1: 'one', 2: 'two', 3: 'three'}
>>> c.setdefault(1)  #如果存在key=1,就显示对应的value
'one'

>>> c.setdefault('kobe','laker') #如果没有key,就添加key-value对到字典c
'laker'
>>> c
{1: 'one', 2: 'two', 3: 'three', 'kobe': 'laker'}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: