零基础入门学习Python(13):字典
字典是Python中唯一一个映射类型
创建和访问字典:键对应的值
>>> dict1 = {} #创建一个空的字典
>>> type(dict1)
<class 'dict'>
>>> dict2 = {1:'one',2:'two',3:'three'} #使用花括号和键值对创建字典
>>> dict2
{1: 'one', 2: 'two', 3: 'three'}
>>> dict2[1] #通过键来访问字典中的值
'one'
>>> dict3 = {'xiuxiu':'my name','Jessica':'my English name','LittleSeven':'my dog\'s name'}
>>> dict3 #字典中没有顺序
{'LittleSeven': "my dog's name", 'Jessica': 'my English name', 'xiuxiu': 'my name'}
>>> dict3['xiuxiu']
'my name'
除了可以使用花括号{}创建字典,python中还有专门的函数dict()来创建字典对象
>>> dict1 = dict() #使用dict()创建一个空字典
>>> dict1
{}
>>> dict2 = dict((('A',65),('B',66),('C',67))) #通过(键,值)对来创建字典,由于dict()只能有一个参数,所以把(键,值)对打包成元组
>>> dict2
{'A': 65, 'C': 67, 'B': 66}
>>> dict2['A']
65
>>> dict3 = dict(myName1 = 'xiuxiu',myName2 = 'Jessica',myDogName = 'LittleSeven') #通过关键字创建字典
>>> dict3
{'myDogName': 'LittleSeven', 'myName2': 'Jessica', 'myName1': 'xiuxiu'}
>>> dict3['myName1']
'xiuxiu'
>>> dict3['myName1'] = 'Jinxiu' #如果键存在,则改变键对应的值
>>> dict3
{'myDogName': 'LittleSeven', 'myName2': 'Jessica', 'myName1': 'Jinxiu'}
>>> dict3['everyDay'] = 'happy' #如果键不存在,则添加一个新的(键->值)对
>>> dict3
{'myDogName': 'LittleSeven', 'myName2': 'Jessica', 'everyDay': 'happy', 'myName1': 'Jinxiu'}
有关创建和访问字典的几个常用函数
>>> dict1.fromkeys((1,2,3)) #创建字典,有两个参数,第一个参数是键,第二个参数是键对应的值,当第二个参数为空时,每个键对应的值为None
{1: None, 2: None, 3: None}
>>> dict2.fromkeys((1,2,3),'xiuxiu、Jessica') #只能给键赋相同的值,即所有键对应的值均相同
{1: 'xiuxiu、Jessica', 2: 'xiuxiu、Jessica', 3: 'xiuxiu、Jessica'}
>>> dict2 = dict((('A',65),('B',66),('C',67)))
>>> dict2.keys() #返回一个列表,列表中元素为字典的键
dict_keys(['A', 'C', 'B'])
>>> dict2.values() #返回一个列表,列表中元素为字典中键对应的值
dict_values([65, 67, 66])
>>> dict2.items() #返回一个列表,列表中元素为字典的(键,值)对
dict_items([('A', 65), ('C', 67), ('B', 66)])
当使用键查找字典中对应的值时,如果键不存在,会产生KeyError的错误,我们同样可以使用get()函数获取字典中键对应的值,此时如果键不存在,不会出错
>>> dict2.get('D') #键不存在时,不产生任何动作
>>> dict2.get('D','NoExist') #get()函数可以有第二个参数,如果键不存在,就会显示第二个参数
'NoExist'
>>> dict2.get('A','NoExist') #如果键存在,则返回键对应的值
65
下面通过简单的代码演示介绍字典的其他常用的内置函数
>>> dict1 = dict((('A',65),('B',66),('C',67),('D',68)))
>>> dict1.pop('B') #弹出键对应的值
66
>>> dict1
{'A': 65, 'C': 67, 'D': 68}
>>> dict1.popitem() #弹出字典中任意一个(键,值)对
('A', 65)
>>> dict1
{'C': 67, 'D': 68}
>>> dict1.setdefault('E') #向字典加入键值对,如果只给出键,则其对应的值为None
>>> dict1
{'C': 67, 'E': None, 'D': 68}
>>> dict1.setdefault('F',70)
70
>>> dict1
{'C': 67, 'E': None, 'D': 68, 'F': 70}
>>> dict2 = {'E':69}
>>> dict1.update(dict2) #用dict2来更新dict1
>>> dict1
{'C': 67, 'E': 69, 'D': 68, 'F': 70}
>>> dict1.clear() #清空字典
>>> dict1
{}