一、字典(dictionary)
字典和列表类似,也是可变序列,只是与列表不同,它是无序的可变序列,保存的内容是以“键——值对”的形式存放,这类似于我们使用查找汉字的新华字典,它可以把拼音和汉字串起来,通过拼音音节表来快速查找到想要找的汉字。其中新华字典里面的音节表相当于(键)对应的汉字相当于值(value)。键是惟一的,而值可以是多个。字典在定义一个包含多个命名字段的对象时有很大用处。
**说明:**python中的字典相当于Java或者c++中的map对象。
字典的主要特征:
1.通过键而不是通过索引来读取
字典有时也称为关联数组或者散列表(hash),它是通过键将一系列的值联系起来,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。
2.字典是任意对象的无序集合
字典是无序的,各项是从左到右随机排序的,及保存在字典当中的项没有特定的顺序,这样可以提高查找速度。
3.字典是可变的,并且是可以任意嵌套
字典可以在任意处正常或缩短(无需生成一份副本)并且他支持任意深度的嵌套(字典的值可以使列表或者其他子字典)
4.字典中的键必须是唯一
不允许同一个键出现两次,如果出现两次,则后一个值会被记住,第一个会被忘记。
5.字典中的键必须不可变。
字典中的键是不可改变的,所以可以使用数字、字符串或者元组,但不能使用列表。
二、字典的创建和删除
定义字典时,每个元素都包含两个部分:“键”和“值”。
创建字典时,在“键”和“值”之间用冒号隔开,相邻两个元素之间使用逗号隔开,所有元素都放在大括号中{}。
2.1创建字典
2.1.1创建字典的格式
dictionary = {'key1':'value1','key2':'value2',.....'keyn':'valuen',}
参数详解:dictionary:字典名称
key1,key2:元素的键,唯一不可变
value1,value2:元素的值,可以使用任何数据类型,不是唯一的
2.1.2创建字典
dictionary = {'qq':'123','微信':'456','易信':'789'}
print(dictionary)
print(type(dictionary))
打印结果
{'qq': '123', '微信': '456', '易信': '789'}
<class 'dict'>
2.1.3创建空字典
dictionary = {}
print(dictionary)
print(type(dictionary))
打印结果
{}
<class 'dict'>
2.1.4通过映射函数创建字典
name = ['root','westos'] 定义键的列表
password = ['redhat','lee'] 定义键的值
print(zip(name,password)) 输出对象
print(list(zip(name,password)))
print(dict(zip(name,password))) 列表转换成字典生成字典
打印结果:
<zip object at 0x7fb00f4dce08>
[('root', 'redhat'), ('westos', 'lee')]
{'root': 'redhat', 'westos': 'lee'} 字典
zip()函数用于将多个列表或元组对于位置的元素组合为元组,并返回这些内容的zip对象。如果想得到元组,可以将zip对象通过tuple()函数转为为元组,想得到列表可以使用list()函数将其转换为列表
2.1.5通过给定键——值对创建字典
(1)
dictionary = {
'root' : [123,456,789], root和westos表示元素的键必须是惟一的,
'westos':[321,654,987] []内数字表是值可以改变
}
print(dictionary)
print(type(dictionary))
打印结果
{'root': [123, 456, 789], 'westos': [321, 654, 987]}
<class 'dict'>
(2)
dictionary = dict(小名 = '水瓶座', 小黑 = '狮子座', 小花 = '处女座')
print(dictionary)
dictionary = dict(小名 = '水瓶座', 小黑 = '水瓶座', 小花 = '处女座')
print(dictionary)
打印结果
{'小名': '水瓶座', '小黑': '狮子座', '小花': '处女座'}
{'小名': '水瓶座', '小黑': '水瓶座', '小花': '处女座'}
2.2字典嵌套
student = {
'westos': {
'id':'12345',
'age':'20',
'score':'50'
},
'redhat':{
'id':'456789',
'age':'13',
'score':'20'
}
}
print(student['westos']['id'])
打印结果
12345
2.3所有的key的value值相同的时候的定义方法
print({}.fromkeys({'1','2'},'000000'))
打印结果
{'2': '000000', '1': '000000'}
三、字典的特性(成员操作符、for循环遍历)
3.1不支持索引、切片
3.2成员操作符
d = {
'1':'a',
'2':'b'
}
print('1' in d)
print('1' not in d)
打印结果
True
False
3.3for循环遍历
d = {'1':'a','2':'b'}
for key in d:
print(key,d[key])
打印结果
1 a
2 b
定义一个字典使用items()函数方法获得键——值对的元组列表,并输出全部键——值对
d = {'1':'a','2':'b'}
for key,valute in d.items():
print(key,valute)
打印结果
1 a
2 b