Python3 字典

Posted Python 学习之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 字典相关的知识,希望对你有一定的参考价值。

Python3字典特点

  1. 无序

  2.键唯一      #不可变对象:整数、字符串、元组;可变对象:列表、字典

    键:字典中,字典值可以是pyton 任意一个对象,但键不行;键在字典中不能出现相同的键,如果相同,后一个值会被记住,如下实例:

dic = {name:xp,name:26,job:IT,salary:9000}
print(dic) # 打印结果为:{‘name‘: ‘26‘, ‘job‘: ‘IT‘, ‘salary‘: 9000}

    键必须不可变,可以是数字,字符串或者元组,决不能用列表和字典。

字典的创建

  字典的每个键值(key)对用冒号(:)分割,每个键值对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

1 dic = {name:xp,age:26,job:IT,salary:9000}
2 print(dic)

查 通过键去查找

  把相应的键放入到方括号中

1 dic = {name:xp,age:26,job:IT,salary:9000}
2 print(dic[age])   #打印结果为:26
3 print(list(dic.keys())) #以列表形式打印字典中的键;也可以不用加liest转换    dic.keys()
4 #打印结果:[‘name‘, ‘age‘, ‘job‘, ‘salary‘]
5 print(list(dic.values())) # 以列表形式打印字典中所有键对应的值            dic.values()
6 #打印结果为:[‘xp‘, ‘26‘, ‘IT‘, 9000]
7 print(list(dic.items())) #以列表的形式打印字典中所有的键值对              dic.items()
8 #打印结果为:[(‘name‘, ‘xp‘), (‘age‘, ‘26‘), (‘job‘, ‘IT‘), (‘salary‘, 9000)]

  上述程序中有一种情况下需要用 list 转换,如下程序:

1 dic = {name:xp,age:26,job:IT,salary:9000}
2 dic1 = dic.keys()
3 print(dic1)   #打印结果为:dict_keys([‘name‘, ‘age‘, ‘job‘, ‘salary‘])
4 #print(dic1[1]) 打印这句话会报错
5 #报错 TypeError: ‘dict_keys‘ object does not support indexing  是因为dic1打印出来的是对象不是列表,怎么办呢?
6 
7 print(list(dic1)[1]) #打印结果为: age
8 #加上list 转换,将dic1转换为列表:[‘name‘, ‘age‘, ‘job‘, ‘salary‘],然后取[1]元素。

  字典中键不存在会是什么样呢?请看实例

1 dic = {name:xp,job:IT,salary:9000}
2 print(dic)# 打印结果为:{‘name‘: ‘xp‘, ‘job‘: ‘IT‘, ‘salary‘: 9000}
3 dic[age] = 18
4 print(dic)#打印结果为:{‘name‘: ‘xp‘, ‘job‘: ‘IT‘, ‘salary‘: 9000, ‘age‘: 18}
5 #通过例子我们能看出字典中如果键不存在,将会添加对应的键值对。这也是添加字典的一种方法如果将dic[‘age‘] = 18 改为 dic[‘age‘] 那么会报错,大家可以试试。

  字典中键存在,又会是什么结果呢?请看实例

1 dic = {name:xp,age:26,job:IT,salary:9000}
2 
3 ret = dic.setdefault(age,34)  #setdefault() 函数 如果键存在,则返回对应的值,
4 print(ret) #打印结果为:26

改 修改字典

  通过增加新的键值对,来修改或者删除字典中已有的内容

1 dic = {name:xp,age:26,job:IT,salary:9000}
2 dic[age] = 20  #通过键来修改对应的值。
3 print(dic)
4 #打印结果为:{‘name‘: ‘xp‘, ‘age‘: 20, ‘job‘: ‘IT‘, ‘salary‘: 9000}
5 
6 dic[like] = book
7 print(dic)
8 #打印结果为:{‘name‘: ‘xp‘, ‘age‘: 20, ‘job‘: ‘IT‘, ‘salary‘: 9000, ‘like‘: ‘book‘}
1 dic = {name:xp,age:26,job:IT,salary:9000}
2 dic1 = {like:book,name:UUM}
3 dic.update(dic1)# update()  通过函数进行修改,被修改的字典里与要添加的键相同,则被修改的字典对应的键值被更新
4 print(dic) 
5 #打印结果为:{‘name‘: ‘UUM‘, ‘age‘: ‘26‘, ‘job‘: ‘IT‘, ‘salary‘: 9000, ‘like‘: ‘book‘}
6 
7 print(dic1)
8 #打印结果为:{‘like‘: ‘book‘, ‘name‘: ‘UUM‘}

 

删 删除字典

 1 #程序1
 2 dic = {name:xp,age:26,job:IT,salary:9000}
 3 del dic[name]  #通过键来删除字典中的键值对
 4 print(dic) # 打印结果为:{‘age‘: ‘26‘, ‘job‘: ‘IT‘, ‘salary‘: 9000}
 5 
 6 #程序2
 7 dic = {name:xp,age:26,job:IT,salary:9000}
 8 a=dic.pop(age)  #删除该键值对应的值,并返回该键值对应的值
 9 print(dic) #打印结果为:{‘name‘: ‘xp‘, ‘job‘: ‘IT‘, ‘salary‘: 9000}
10 print(a) #打印结果为:26
11 
12 #程序3
13 dic = {name:xp,age:26,job:IT,salary:9000}
14 b = dic.popitem()  #随机删除字典中某组键对值,并以元组方式返回
15 print(b)   # 打印结果为:(‘salary‘, 9000)
16 print(dic) # 打印结果为:{‘name‘: ‘xp‘, ‘age‘: ‘26‘, ‘job‘: ‘IT‘}
17 
18 #程序4
19 dic = {name:xp,age:26,job:IT,salary:9000}
20 dic.clear()   #清空字典,但字典还存在,只不过是是一个空字典
21 print(dic) #打印结果为:{}
22 
23 del dic #删除字典,再打印的话会报错
24 print(dic) #提示错误:NameError: name ‘dic‘ is not defined

 

字典嵌套

   字典是支持无限极嵌套的。

 1 cities = {
 2     河南省:{
 3         商丘市:[民权县,睢县,宁陵县],
 4         开封市:[兰考县,杞县,通许县],
 5         洛阳市:[宜阳县,洛川县,伊川县]
 6             },
 7     北京市:{
 8         大兴区:[西红门,黄村,天宫院],
 9         丰台区:[郭公庄,科技园,总部基地],
10         朝阳区:[望京,将台,太阳宫],
11         海淀区:[万柳,三小,巴沟]
12             },
13     河北省:{
14         保定市:[涿州市,高碑店,保定],
15         廊坊:[永清,自然公园,安次区],
16         张家口:[怀安县,万全区,桥西区]
17             }
18         }
19 print(cities[河南省][洛阳市][1])
20 #打印结果为:洛川县

  由上面的例子可知,河南省、北京市、河北省是个大的字典,而河南省又是个字典,字典里面又嵌套列表。

其他操作

  dic.formkeys(参数,子参数) 其中参数可以是列表、元组。

1 dic = {}  #定义一个空字典
2 dic1 = dic.fromkeys((host1,host2,host3),date)#.formkeys(参数,子参数)函数会生成一个字典
3 print(dic1)   #一般初始化用 
4 # 打印结果为:{‘host1‘: ‘date‘, ‘host2‘: ‘date‘, ‘host3‘: ‘date‘}
dic = {}  #定义一个空字典
dic1 = dic.fromkeys([host1,host2,host3],#会打印字典里面有列表[‘date1‘,‘date2‘])#.formkeys(参数,子参数)函数会生成一个字典
print(dic1)   #一般初始化用
# 打印结果为:{‘host1‘: [‘date1‘, ‘date2‘], ‘host2‘: [‘date1‘, ‘date2‘], ‘host3‘: [‘date1‘, ‘date2‘]}

  sorted()

dic = {name:xp,age:26,job:IT,salary:9000}
print(sorted(dic))    # 对键进行排序
#打印结果为:[‘age‘, ‘job‘, ‘name‘, ‘salary‘]
print(sorted(dic.items())) # 对键值对进行排序
#打印结果为:[(‘age‘, 26), (‘job‘, ‘IT‘), (‘name‘, ‘xp‘), (‘salary‘, 9000)]

循环打印字典中的 values 和keys 的值

1 dic = {name:xp,age:26,job:IT,salary:9000}
2 for i in dic.values():    #循环打印字典中键对应的值(values)
3     print(i)
4 for i in dic.keys():  #循环打印键的值(keys)
5     print(i)

字典目前学到的就这些,以上是我学习过程中所总结的笔记,希望对大家有所帮助,觉得不错可以关注我哦~_~

 

以上是关于Python3 字典的主要内容,如果未能解决你的问题,请参考以下文章

scrapy按顺序启动多个爬虫代码片段(python3)

selenium10-python3部分代码复习

13 个非常有用的 Python 代码片段

2018-05-14 代码考古-Python3官方教程字典例程

Python snippet(代码片段)

Python代码阅读(第19篇):合并多个字典