您当前的位置:首页 > 计算机 > 编程开发 > Python

Python字典(dict)的用法

时间:10-17来源:作者:点击数:

Python 字典(Dict)的元素放置于大括号“{}” 内,是一种“键”(Key)与“值”(Value)对应的数据类型。

字典跟列表元组序列类型有一个很大的不同点,就是字典中的键是不具有顺序性的。由于键没有顺序性,因此适用于序列类型的切片运算在字典中就无法使用。

Python字典简介

字典的元素放置于大括号 “{}”内,每一个元素都是一个键值对,语法如下。

字典名称={key1:value1, key2:value2, key3:value3 …}

例如下面的代码。

dic = {'length':4, 'width':8, 'height':12}

在上述代码中,“length”“width”“height”是字典中字符串数据类型的键,而值是一种数值。

又例如下面的代码:

dic={'name':'www.cdsy.xyz', 'author': '城东书院', 'publisher':'网站'}
print(dic['name']) 
print(dic['author'])  
print(dic['publisher'])

上面的程序代码中共有 3 个元素,我们只要利用每一个元素的键就可以读出其所代表的值。

输出结果:

www.cdsy.xyz
城东书院
网站

要修改字典的元素值,必须针对键设定新值才能取代原先的旧值,例如下面的代码:

dic={'name':'www.cdsy.xyz', '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.cdsy.xyz', 'author': '城东书院', 'publisher':'网站'}
dic.clear() 
print(dic)

输出结果:

{}

2) 复制函数copy()

copy() 函数可以复制整个字典,以达到数据备份的目的,复制后所得到的新字典会和原先的字典在存储器中占据不同的地址,两者的内容不会相互影响,例如下面的代码。

dic1={"title":"www.cdsy.xyz", "year":2012, "author":"城东书院"}
dic2=dic1.copy()
print(dic2)#新字典dic2和dic1的内容一致
dic2["title"]="编程语言学习第一站!"#修改新字典dic2的内容
print(dic2)#新字典dic2的内容已和原字典dic1的内容不一致
print(dic1)#原字典的内容不会受到新字典dic2内容更改的影响

输出结果:

{'title': 'www.cdsy.xyz', 'year': 2012, 'author': '城东书院'}
{'title': '编程语言学习第一站!', 'year': 2012, 'author': '城东书院'}
{'title': 'www.cdsy.xyz', 'year': 2012, 'author': '城东书院'}

3)查找函数get()

get() 函数会用键查找对应的值,但是如果该键不存在则会返回默认值,没有默认值就返回 None,格式如下。

v1=dict.get(key[, default=None] )

例如下面的代码:

dic1={"title":"www.cdsy.xyz", "year":2012, "author":"城东书院"}
owner=dic1.get("author")  
print(owner) #输出城东书院

如果指定的键不存在,会返回 default 值(也就是 None)。也可以改变 default 值,那么当键不存在时,就会输出所设定的值,例如下面的代码。

dic1={"title":"www.cdsy.xyz", "year":2012, "author":"城东书院"}
owner=dic1.get("color")  
print(owner) #输出None
owner=dic1.get("color","橙色图标")
print(owner) #输出橙色图标
4) 移除函数pop()

pop() 函数可以移除指定的元素,例如下面的代码:

dic1={"title":"www.cdsy.xyz", "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.cdsy.xyz", "year":2012, "author":"城东书院"}
dic2={"color":"橙色图标", "year":'公元2021年'}
dic1.update(dic2) 
print(dic1)

输出结果:

{'title': 'www.cdsy.xyz', 'year': '公元2021年', 'author': '城东书院', 'color': '橙色图标'}

6) items()、keys() 与 values() 函数

items() 函数用来获取字典的所有项,以列表方式返回。keys() 与 values() 这两个函数分别取字典的 key 或 value。例如下面的代码。

dic1={"title":"www.cdsy.xyz", "year":2012, "author":"城东书院"}
print(dic1. items())
print(dic1. keys()) 
print(dic1.values())

输出结果:

dict_items([('title', 'www.cdsy.xyz'), ('year', 2012), ('author', '城东书院')])
dict_keys(['title', 'year', 'author'])
dict_values(['www.cdsy.xyz', 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() 函数清空字典内容。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门