Python3 数据类型-字典
字典是一种可变数据类型,且可存储任意类型对象。
字典使用大括号"{}"括起来,由键(key)和值(values)组成,键只能使用不可变类型定义,值可以使用可变类型{'键':'值'}
一 创建
实例(Python3.0+):
|
1
2
3
4
5
6
7
8
|
dic = {'name':'makes','age':'30','hobby':'gril','is_handsome':True}print(dic['name']) #makesdic1 = {1:'makes','hobby':{'age':35,'gril_name':'wanglk'},'age':30}print(dic1['hobby']) #{'gril_name': 'wanglk', 'age': 35}dic2 = dict((('name','makes'),('age',30)))print(dic2) #{'name': 'makes', 'age': 30} |
二 修改
实例(Python3.0+):直接修改
|
1
2
3
4
5
6
7
|
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}dict['Age'] = 8; # 更新 Agedict['School'] = "清华大学" # 添加信息print ("dict['Age']: ", dict['Age'])print ("dict['School']: ", dict['School']) |
dict.setdefault
- 键存在,不改动,返回字典中相应的值
- 键不存在,在字典中添加相应的键值对,并返回相应的值
实例(Python3.0+):
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
dic = {'name':'makes','age':'30','hobby':'gril','is_handsome':True}#键存在,不改动,返回字典中相应的值dic.setdefault('age',35)ret = dic.setdefault('age',35) #有返回值print(ret)#30print(dic)#{'name': 'makes', 'age': '30', 'is_handsome': True, 'hobby': 'gril'}#键不存在,在字典中添加相应的键值对,并返回相应的值dic.setdefault('salary',10000)ret = dic.setdefault('salary','10000')print(dic)#{'name': 'makes', 'hobby': 'gril', 'salary': 10000, 'age': '30', 'is_handsome': True}print(ret)#10000 |
三 查
dict.keys()
- 以列表的方式返回字典中的所有键(keys)
实例(Python3.0+):
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
dic1 = {'age':19,'name':'lvcm','hobby':'study'}print(dic1['age']) #19print(dic1.keys()) #查看字典中的所有键,dict_keys(['age', 'hobby', 'name'])print(type(dic1.keys()))#<class 'dict_keys'>print(list(dic1.keys()))#['name', 'age', 'hobby']dic2 = {'name':'makes','age':['123','345'],'salary':20000}print('age的值为:',dic2['age'][1])#字典中的值为列表时,可以使用dic.[keys][索引]方式查看#age的值为: 345 |
dict.values()
- 以列表的方式返回字典中的所有值(values)
实例(Python3.0+):
|
1
2
3
4
5
6
|
dic1 = {'age':19,'name':'makes','hobby':'study'}print(dic1.values())#dict_values(['makes', 19, 'study'])print(list(dic1.values()))#['study', 19, 'makes'] |
四 更新
dict.update(dict1)
- 把字典dict1的键/值对更新到dict里
- 当两个字典中的键不同时,把dict1的键值插入到dict中
- 当两个字典中存在相同键时,dict1覆盖dict的键值
实例(Python3.0+):
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# 当两个字典完全不相同时dic1 = {'name':'lvcm','age':19}dic2 = {'hobby':'girl','salary':10000}dic1.update(dic2)print(dic1)# dic1--> {'hobby': 'girl', 'age': 19, 'salary': 10000, 'name': 'lvcm'}print(dic2)# dic2 --> {'hobby': 'girl', 'salary': 10000}# 当两个字典存在相同键时,会覆盖前面的键值dic1 = {'name':'lvcm','age':19}dic2 = {'hobby':'girl','salary':10000,'name':'1111'}dic1.update(dic2)# dic1 --> {'salary': 10000, 'age': 19, 'hobby': 'girl', 'name': '1111'}print(dic1)# dic2 --> {'salary': 10000, 'hobby': 'girl', 'name': '1111'}print(dic2) |
五 删除
del dict[keys]
- 删除字典中的某个键值对
- 没有返回值
实例(Python3.0+):
|
1
2
3
4
|
dic1 = {"name":"makes","age":19,"salary":10000}del dic1["name"]print(dic1) |
del dict
- 删除整个字典
实例(Python3.0+):
|
1
2
3
4
5
|
dic1 = {"name":"makes","age":19,"salary":10000}del dic1print(dic1)#NameError: name 'dic1' is not defined(字典已删除,所以报错dict1未定义) |
dict.clear()
- 清空字典
实例(Python3.0+):
|
1
2
3
4
5
|
dic1 = {"name":"makes","age":19,"salary":10000}dic.clear()print(dic1) # {} |
dict.popitem()
- 随机删除字典中的一组键值对
- 有返回值,以元祖方式返回
- 应用不广泛
实例(Python3.0+):
|
1
2
3
4
5
6
7
|
dict1 = {"name":"makes","age":19,"salary":10000}dict2 = dict1.popitem()print(dict1)#{'age': 19, 'salary': 10000}print(dict2)#('name', 'makes') |
六 字典排序
sorted()
实例(Python3.0+):
|
1
2
3
4
5
6
|
dic6 = {2:111,3:222,4:333}# 以键来进行排序print(sorted(dic6.items()))# 以值进行排序print(sorted(dic6.values())) |
七 遍历
实例(Python3.0+):
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
dic7 = {'name':'makes','age':19}print('dic7 items:',dic7.items())#以列表返回可遍历的(键, 值) 元组数组#dic7 items: dict_items([('name', 'lvcm'), ('age', 19)])for key in dic7: print(key)"""针对键进行遍历,也可如下写法:for key in dic7.keys(): print(key)nameage"""for values in dic7.values(): print(values)"""针对值进行遍历19lvcm"""for i in dic7: print(i,dic7[i])"""针对键和值组合遍历,推荐使用name makesage 19"""for i,v in dic7.items(): print(i,v)"""针对键和值组合遍历age 19name makes""" |
八 其它操作及方法
dict.fromkeys()
- 初始化字典时使用
实例1(Python3.0+):
|
1
2
3
4
5
6
|
dic5 = dict.fromkeys(['host1','host2','host3'],'test')print(dic5) # {'host2': 'test', 'host1': 'test', 'host3': 'test'}dic5 = dict.fromkeys(['host1','host2','host3'],['test','test1'])print(dic5)#{'host3': ['test', 'test1'], 'host2': ['test', 'test1'], 'host1': ['test', 'test1']} |
实例2(Python3.0+):
|
1
2
3
4
5
6
|
dic5 = dict.fromkeys(['host1','host2','host3'],['test','test1'])dic5['host1'][1]='test3'print(dic5)# {'host1': ['test', 'test3'], 'host3': ['test', 'test3'], 'host2': ['test', 'test3']}# 想法是把host1中的test1修改成test3,但是结果却修改了全部,此法慎用 |
字典嵌套
实例(Python3.0+):
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
dic1 = { '欧美':{ 'www.baidu.com':['免费的','质量一般']}, '日韩':{ 'www.runoob.com':['收费的','质量标清']}, '国产':{ 'www.sina.com.cn':['免费的','高清']}, '三级片':{ 'www.1024.com':['免费的','下载速度慢']}, '四级片':{ 'www.bokeyuan.com':['收费的','无码']}, }print(dic1)#{'欧美': {'www.baidu.com': ['免费的', '质量一般']}, '国产': {'www.sina.com.cn': ['免费的', '高清']}, '日韩': {'www.runoob.com': ['收费的', '质量标清']}, '三级片': {'www.1024.com': ['免费的', '下载速度慢']}, '四级片': {'www.bokeyuan.com': ['收费的', '无码']}} |
九 函数
len()
- 计算字典元素个数,即键的总数。
实例(Python3.0+):
|
1
2
3
|
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}print(len(dict))#3 |
type(variable)
- 返回输入的变量类型,如果变量是字典就返回字典类型
实例(Python3.0+):
|
1
2
3
|
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}print(type(dict))#<class 'dict'> |
str(dict)
- 输出字典,以可打印的字符串表示
实例(Python3.0+):
|
1
2
3
|
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}print(str(dict))#"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}" |

浙公网安备 33010602011771号