Python字典(dict)的用法
字典跟列表、元组序列类型有一个很大的不同点,就是字典中的键是不具有顺序性的。由于键没有顺序性,因此适用于序列类型的切片运算在字典中就无法使用。
Python字典简介
字典的元素放置于大括号 “{}”内,每一个元素都是一个键值对,语法如下。字典名称={key1:value1, key2:value2, key3:value3 …}
例如下面的代码。dic = {'length':4, 'width':8, 'height':12}
在上述代码中,“length”“width”“height”是字典中字符串数据类型的键,而值是一种数值。又例如下面的代码:
dic={'name':'www.weixueyuan.net', 'author': '微学苑', 'publisher':'网站'} print(dic['name']) print(dic['author']) print(dic['publisher'])上面的程序代码中共有 3 个元素,我们只要利用每一个元素的键就可以读出其所代表的值。
输出结果:
www.weixueyuan.net
微学苑
网站
dic={'name':'www.weixueyuan.net', 'author': '微学苑', 'publisher':'网站'} dic['name']= '编程语言学习第一站' #将字典中的"'name'"键的值修改为'编程语言学习第一站' print(dic)输出结果:
{'name': '编程语言学习第一站', 'author': '微学苑', 'publisher':'网站'}
我们还可以直接往字典中加入新的键值对,例如下面的代码:
dic={'name': '编程语言学习第一站', 'author': '微学苑', 'publisher':'网站'} dic['price']= 580 #在字典中新增"'price'",该键的值为580 print(dic)输出结果:
{'name': '编程语言学习第一站', 'author': '微学苑', 'publisher': '网站', 'price': 580}
另外,字典中的键必须唯一,而值可以是相同值。字典中如果有相同的键却被设定了不同的值,则只有最后面的键所对应的值有效,前面的键将被覆盖。
例如以下的示例中,字典中的 'nation' 键被设定了两个不同的值,前面那一个被设定为'美国',后面那一个被设定为'中国',所以前面会被后面那一个设定值'中国'所覆盖。代码如下:
dic={'name':'Peter Anderson', 'age':18, 'nation':'美国','nation':'中国'} #设定字典 print(dic['nation']) #会输出中国
如果要删除字典中的特定元素,语法如下。
del 字典名称[键]
例如下面的代码。del dic['age']
如果想删除整个字典,则可以使用 del 语句,其语法如下。
del字典名称
例如下面的代码。del dic
具体的例子如下列代码所示:
english ={'春':'Spring', '夏':'Summer', '秋':'Fall', '冬':'Winter'} #字典内容 del english['秋'] #删除字典中指定的键值对 print(english) del english #删除整个字典输出结果:
{'春': 'Spring', '夏': 'Summer', '冬': 'Winter'}
Python常用的字典函数
下面介绍与 Python 字典操作相关的常用函数。1) 清除函数clear()
clear() 函数会清空整个字典,这个函数和前面提到的del语句的不同点是它会清空字典中所有的元素,但是字典仍然存在,只不过变成空的字典。但是 del 语句则会将整个字典删除,字典一经删除,就不存在了。以下例子将示范如何使用 clear() 函数。
dic={'name': 'www.weixueyuan.net', 'author': '微学苑', 'publisher':'网站'} dic.clear() print(dic)输出结果:
{}
2) 复制函数copy()
copy() 函数可以复制整个字典,以达到数据备份的目的,复制后所得到的新字典会和原先的字典在存储器中占据不同的地址,两者的内容不会相互影响,例如下面的代码。dic1={"title":"www.weixueyuan.net", "year":2012, "author":"微学苑"} dic2=dic1.copy() print(dic2)#新字典dic2和dic1的内容一致 dic2["title"]="编程语言学习第一站!"#修改新字典dic2的内容 print(dic2)#新字典dic2的内容已和原字典dic1的内容不一致 print(dic1)#原字典的内容不会受到新字典dic2内容更改的影响输出结果:
{'title': 'www.weixueyuan.net', 'year': 2012, 'author': '微学苑'}
{'title': '编程语言学习第一站!', 'year': 2012, 'author': '微学苑'}
{'title': 'www.weixueyuan.net', 'year': 2012, 'author': '微学苑'}
3)查找函数get()
get() 函数会用键查找对应的值,但是如果该键不存在则会返回默认值,没有默认值就返回 None,格式如下。v1=dict.get(key[, default=None] )
例如下面的代码:dic1={"title":"www.weixueyuan.net", "year":2012, "author":"微学苑"} owner=dic1.get("author") print(owner) #输出微学苑
如果指定的键不存在,会返回 default 值(也就是 None)。也可以改变 default 值,那么当键不存在时,就会输出所设定的值,例如下面的代码。
dic1={"title":"www.weixueyuan.net", "year":2012, "author":"微学苑"} owner=dic1.get("color") print(owner) #输出None owner=dic1.get("color","橙色图标") print(owner) #输出橙色图标
4) 移除函数pop()
pop() 函数可以移除指定的元素,例如下面的代码:dic1={"title":"www.weixueyuan.net", "year":2012, "author":"微学苑"} dic1.pop("title") print(dic1) #输出 {'year': 2012, 'author': '微学苑'}输出结果:
{'year': 2012, 'author': '微学苑'}
5) 更新或合并函数update()
update() 函数可以将两个字典合并,格式如下。dict1.update(dict2)
dict1 会与 dict2 字典合并,如果有重复的值,括号内字典 dict2 的元素会取代字典 dict1 的元素,例如下面的代码:dic1={"title":"www.weixueyuan.net", "year":2012, "author":"微学苑"} dic2={"color":"橙色图标", "year":'公元2021年'} dic1.update(dic2) print(dic1)输出结果:
{'title': 'www.weixueyuan.net', 'year': '公元2021年', 'author': '微学苑', 'color': '橙色图标'}
6) items()、keys() 与 values() 函数
items() 函数用来获取字典的所有项,以列表方式返回。keys() 与 values() 这两个函数分别取字典的 key 或 value。例如下面的代码。dic1={"title":"www.weixueyuan.net", "year":2012, "author":"微学苑"} print(dic1. items()) print(dic1. keys()) print(dic1.values())输出结果:
dict_items([('title', 'www.weixueyuan.net'), ('year', 2012), ('author', '微学苑')])
dict_keys(['title', 'year', 'author'])
dict_values(['www.weixueyuan.net', 2012, '微学苑'])
【示例1】以下程序示例是各种字典函数的综合运用。Python 代码如下:
labor = {'高中仁':'RD', '许富强':'SA'} #设定字典的数据 labor['陈月风'] = 'CEO' #新增一个元素 labor.setdefault('陈月风') print('目前字典:') print(labor) labor['陈月风'] ='PRESIDENT' #用update()函数更新字典 labor.update({'周慧宏':'RD', '郑大富':'SA'}) print('按照名字递增排序:') for key in sorted(labor): print('%8s %9s' % (key, labor[key])) person = {'陈志强':'SA','蔡工元':'RD'} labor.update(person) # 更新字典 labor.update(胡慧兰 = 'RD', 周大全 = 'SA')#以指派方式更新 print('更新字典内容:\n', labor) labor.pop('陈志强')#删除指定数据 print('删除后按照名字排序:') for value in sorted(labor, reverse = False): print('%8s %9s' % (value, labor[value])) print('将字典内容清空:') print(labor.clear()) print(labor)#输出字典输出结果:
目前字典:
{'高中仁': 'RD', '许富强': 'SA', '陈月风': 'CEO'}
按照名字递增排序:
周慧宏 RD
许富强 SA
郑大富 SA
陈月风 PRESIDENT
高中仁 RD
更新字典内容:
{'高中仁': 'RD', '许富强': 'SA', '陈月风': 'PRESIDENT', '周慧宏': 'RD', '郑大富': 'SA', '陈志强': 'SA', '蔡工元': 'RD', '胡慧兰': 'RD', '周大全': 'SA'}
删除后按照名字排序:
周大全 SA
周慧宏 RD
胡慧兰 RD
蔡工元 RD
许富强 SA
郑大富 SA
陈月风 PRESIDENT
高中仁 RD
将字典内容清空:
None
{}
- 第 3 行:用 setdefault() 函数新增一个键;由于未指定值,因此默认为None。
- 第 8 行:用 update() 函数配合大括号“{}”直接加入字典元素。
- 第 14~15 行:两种不同的更新字典的方式。
- 第 17 行:用 pop() 函数删除指定键值对。
- 第 19~20 行:用 sorted() 函数将键值对排序。
- 第 22 行:用 clear() 函数清空字典内容。
声明:《Python系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。