字典

字典是另一种可变容器模型,且可存储任意类型对象。

1.创建字典

字典由键和对应值成对组成。每个键与值之间用:隔开,每对之间逗号隔开。

每个键应当互不相同,值可以相同。若同时出现两个相同的键,则后面的那个会被记住。

键必须是不可变的。

dict1 = {'A': '1', 'B': '2', 'C': 3}

2.访问字典

dict1 = {'A': '1', 'B': '2', 'C': 3}
print(dict1['A'])
输出:1

如果访问字典中没有的键,则会报错。

3.修改字典

dict1 = {'A': '1', 'B': '2', 'C': 3}
dict1['C']=33#修改字典中的值
dict1['D']=4#若是字典中没有的,则自动添加到字典中
del dict1['A']#删除字典内容
print(dict1)
输出:
{'B': '2', 'C': 33, 'D': 4}

4.字典内置函数及方法

4.1 fromkeys(seq,val)

fromkeys方法有两个参数,seq中的元素作为字典的键,val为字典所有键对应的初始值(注意是所有)。

返回值为一个新的字典。

seq=['A','B','C']
dict2=dict.fromkeys(seq)
dict3=dict.fromkeys(seq,1)
dict4=dict.fromkeys(seq,[1,2,3])
print(dict2,dict3,dict4)
输出:
{'A': None, 'B': None, 'C': None} {'A': 1, 'B': 1, 'C': 1} {'A': [1, 2, 3], 'B': [1, 2, 3], 'C': [1, 2, 3]}

4.2 keys,values,items

dict5={'A': '1', 'B': '2', 'C': '3'} 

for eachKey in dict5.keys(): 
  print(eachKey) 
for eachValue in dict5.values(): 
  print(eachValue) 
for eachItem in dict5.items(): 
  print(eachItem)
输出:
B  C  D
1  2   3
('A', '1')  ('B', '2')  ('C', '3')

4.3 get(key,default=None)

get() 函数返回指定键的值,如果值不在字典中返回默认值。

dict6={'A': '1', 'B': '2', 'C': '3'}
print(dict6.get('D'))
print(dict6.get('D',"不存在!"))
print(dict6.get('C',"不存在!"))
输出:
None
不存在!
3

4.4 clear()

clear()清空字典所有内容。建议全部使用clear(),否则字典内容还可以用其他方式访问到。

dict7={'A': '1', 'B': '2', 'C': '3'}
dict7.clear()
print(dict7)
输出:{}

4.5 copy()

copy()返回一个字典的浅拷贝。

此处之区别浅拷贝和赋值,有关深拷贝的内容日后再谈。

拷贝父对象,不拷贝父对象内部的子对象。赋值就是对象的引用。

因此,拷贝后对原字典的内部的子对象(方括号[]内元素)进行操作时,浅拷贝内容会受操作影响而变化。

a={'A': [1,2], 'B': '2', 'C': '3'}
b=a.copy()
c=a
a['D']=4
print(a,b,c)
a['A'].append(3)
print(a,b,c)
输出:
{'A': [1, 2], 'B': '2', 'C': '3', 'D': 4} {'A': [1, 2], 'B': '2', 'C': '3'} {'A': [1, 2], 'B': '2', 'C': '3', 'D': 4}
{'A': [1, 2, 3], 'B': '2', 'C': '3', 'D': 4} {'A': [1, 2, 3], 'B': '2', 'C': '3'} {'A': [1, 2, 3], 'B': '2', 'C': '3', 'D': 4}

可以看到,对父对象a的子对象未改变时,b不会改变,但是c会跟着改变。当a的子对象改变时,b,c都会跟着改变。

4.6 pop()

dict8={'A': '1', 'B': '2', 'C': '3'}
dict8.pop('B')
print(dict8)
输出:
{'A': '1', 'C': '3'}

4.7 popitem()

popitem()函数随机返回并删除字典中的一对键和值。

dict9={'A': '1', 'B': '2', 'C': '3'}
dict9.popitem()
print(dict9)
输出:
{'A': '1', 'B': '2'}

4.8 setdefault() 

setdefault(key,default=None) 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

dict10={'A': '1', 'B': '2', 'C': '3'}
dict10.setdefault('D','4')
print(dict10)
print(dict10.setdefault('C'))
输出:
{'A': '1', 'B': '2', 'C': '3', 'D': '4'}
3

4.9 update() 

dict=update(dict1) 函数把字典dict1的键/值对更新到dict里。

dict11={'E':'5','A':'11'}
dict10.update(dict11)
print(dict10)
输出:
{'A': '11', 'B': '2', 'C': '3', 'D': '4', 'E': '5'}