Python字典
创始人
2024-03-18 11:54:32
0

在Python中,字典是一系列键值对。每个键都与一个值相关联,你可使用键来访问相关联的值。与键相关联的值可以是数、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。
alien_0 = {‘color’: ‘green’, ‘points’: 5}

print(alien_0[‘color’]) // green
print(alien_0[‘points’]) // 5
1
2
3
4
在Python中,字典用放在花括号({})中的一系列键值对表示。
键和值之间用冒号分隔,而键值对之间用逗号分隔。在字典中,想存储多少个键值对都可以。
要获取与键相关联的值,可依次指定字典名和放在方括号内的键。
字典是一种动态结构,可随时在其中添加键值对。要添加键值对,可依次指定字典名、用方括号括起的键和相关联的值。
alien_0 = {‘color’: ‘green’, ‘points’: 5}
print(alien_0)

alien_0[‘x_position’] = 0
alien_0[‘y_position’] = 25
print(alien_0) // {‘color’: ‘green’, ‘points’: 5, ‘x_position’: 0, ‘y_position’: 25}
1
2
3
4
5
6
注意,在Python 3.7中,字典中元素的排列顺序与定义时相同。如果将字典打印出来或遍历其元素,将发现元素的排列顺序与添加顺序相同。
可使用一对空花括号定义一个字典,再分行添加各个键值对。
alien_0 = {}

alien_0[‘color’] = ‘green’
alien_0[‘points’] = 5
1
2
3
4
使用字典来存储用户提供的数据或在编写能自动生成大量键值对的代码时,通常需要先定义一个空字典。
要修改字典中的值,可依次指定字典名、用方括号括起的键,以及与该键相关联的新值。
alien_0 = {‘color’: ‘green’}
alien_0[‘color’] = ‘yellow’
1
2
对于字典中不再需要的信息,可使用del语句将相应的键值对彻底删除。使用del语句时,必须指定字典名和要删除的键。
alien_0 = {‘color’: ‘green’, ‘points’: 5}
del alien_0[‘points’]
1
2
注意,删除的键值对会永远消失。
确定需要使用多行来定义字典时,要在输入左花括号后按回车键。在下一行缩进四个空格,指定第一个键值对,并在它后面加上一个逗号。此后再按回车键时,文本编辑器将自动缩进后续键值对,且缩进量与第一个键值对相同。定义好字典后,在最后一个键值对的下一行添加一个右花括号,并缩进四个空格,使其与字典中的键对齐。一种不错的做法是,在最后一个键值对后面也加上逗号,为以后在下一行添加键值对做好准备。
favorite_languages = {
‘jen’: ‘python’,
‘sarah’: ‘c’,
‘edward’: ‘ruby’,
‘phil’: ‘python’,
}
1
2
3
4
5
6
注意,对于较长的列表和字典,大多数编辑器提供了以类似方式设置格式的功能。对于较长的字典,还有其他一些可行的格式设置方式,因此在你的编辑器或其他源代码中,你可能会看到稍微不同的格式设置方式。
使用放在方括号内的键从字典中获取感兴趣的值时,可能会引发问题:如果指定的键不存在就会出错。但就字典而言,可使用方法get()在指定的键不存在时返回一个默认值,从而避免这样的错误。方法get()的第一个参数用于指定键,是必不可少的;第二个参数为指定的键不存在时要返回的值,是可选的。
alien_0 = {‘color’: ‘green’, ‘speed’: ‘slow’}

point_value = alien_0.get(‘points’, ‘No point value assigned.’)
print(point_value)
1
2
3
4
如果指定的键有可能不存在,应考虑使用方法get(),而不要使用方括号表示法。
注意,调用get()时,如果没有指定第二个参数且指定的键不存在,Python将返回值None。这个特殊值表示没有相应的值。None并非错误,而是一个表示所需值不存在的特殊值。
字典可用于以各种方式存储信息,因此有多种遍历方式:可遍历字典的所有键值对,也可仅遍历键或值。

使用for循环来遍历字典

user_0 = {
‘username’: ‘efermi’,
‘first’: ‘enrico’,
‘last’: ‘fermi’,
}

for key, value in user_0.items():
print(f"\nKey: {key}“)
print(f"Value: {value}”)
1
2
3
4
5
6
7
8
9
编写遍历字典的for循环,可声明两个变量,用于存储键值对中的键和值。这两个变量可以使用任意名称。
方法items()返回一个键值对列表。
在不需要使用字典中的值时,方法keys()很有用。
favorite_languages = {
‘jen’: ‘python’,
‘sarah’: ‘c’,
‘edward’: ‘ruby’,
‘phil’: ‘python’,
}

for name in favorite_languages.keys():
print(name.title())
1
2
3
4
5
6
7
8
9
遍历字典时,会默认遍历所有的键。因此,如果将上述代码中的:for name in favorite_languages:替换为:for name in favorite_languages.keys():输出将不变。显式地使用方法keys()可让代码更容易理解,你可以选择这样做,但是也可以省略它。
方法keys()并非只能用于遍历:实际上,它返回一个列表,其中包含字典中的所有键。
favorite_languages = {
‘jen’: ‘python’,
‘sarah’: ‘c’,
‘edward’: ‘ruby’,
‘phil’: ‘python’,
}

if ‘erin’ not in favorite_languages.keys():
print(“Erin, please take our poll!”)
1
2
3
4
5
6
7
8
9
从Python 3.7起,遍历字典时将按插入的顺序返回其中的元素。要以特定顺序返回元素,一种办法是在for循环中对返回的键进行排序。为此,可使用函数sorted()来获得按特定顺序排列的键列表的副本:
favorite_languages = {
‘jen’: ‘python’,
‘sarah’: ‘c’,
‘edward’: ‘ruby’,
‘phil’: ‘python’,
}

for name in sorted(favorite_languages.keys()):
print(f"{name.title()}, thank you for taking the poll.")
1
2
3
4
5
6
7
8
9
可使用方法values()来返回一个值列表,不包含任何键。
favorite_languages = {
‘jen’: ‘python’,
‘sarah’: ‘c’,
‘edward’: ‘ruby’,
‘phil’: ‘python’,
}

for language in favorite_languages.values():
print(language.title())

for language in set(favorite_languages.values()):
print(language.title())
1
2
3
4
5
6
7
8
9
10
11
12
为剔除重复项,可使用集合(set)。集合中的每个元素都必须是独一无二的。
通过对包含重复元素的列表调用set(),可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合。
可使用一对花括号直接创建集合,并在其中用逗号分隔元素。

languages = {‘python’, ‘ruby’, ‘python’, ‘c’}
languages
{‘ruby’, ‘python’, ‘c’}
1
2
3
集合和字典很容易混淆,因为它们都是用一对花括号定义的。当花括号内没有键值对时,定义的很可能是集合。不同于列表和字典,集合不会以特定的顺序存储元素。
字典列表
// 例子1:
alien_0 = {‘color’: ‘green’, ‘points’: 5}
alien_1 = {‘color’: ‘yellow’, ‘points’: 10}
alien_2 = {‘color’: ‘red’, ‘points’: 15}

aliens = [alien_0, alien_1, alien_2]

for alien in aliens:
print(alien)

// 例子2:

创建一个用于存储外星人的空列表。

aliens = []

创建30个绿色的外星人。

for alien_number in range(30):
new_alien = {‘color’: ‘green’, ‘points’: 5, ‘speed’: ‘slow’}
aliens.append(new_alien)

显示前5个外星人。

for alien in aliens[:5]:
print(alien)
print(“…”)

显示创建了多少个外星人。

print(f"Total number of aliens: {len(aliens)}")

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
range()返回一系列数,其唯一的用途是告诉Python要重复这个循环多少次。
在字典中存储列表

存储所点比萨的信息。

pizza = {
‘crust’: ‘thick’,
‘toppings’: [‘mushrooms’, ‘extra cheese’],
}

概述所点的比萨。

print(f"You ordered a {pizza[‘crust’]}-crust pizza "
“with the following toppings:”)

for topping in pizza[‘toppings’]:
print(f"\t{topping}“)
1
2
3
4
5
6
7
8
9
10
11
12
在这个字典中,一个键是’crust’,与之相关联的值是字符串’thick’;下一个键是’toppings’,与之相关联的值是一个列表,
如果函数调用print()中的字符串很长,可以在合适的位置分行。只需要在每行末尾都加上引号,同时对于除第一行外的其他各行,都在行首加上引号并缩进。这样,Python将自动合并圆括号内的所有字符串。
每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。
可在遍历字典的for循环开头添加一条if语句,通过查看len(languages)的值来确定当前的被调查者喜欢的语言是否有多种。
注意,列表和字典的嵌套层级不应太多。如果嵌套层级比前面的示例多得多,很可能有更简单的解决方案。
可在字典中嵌套字典,但这样做时,代码可能很快复杂起来。
users = {
‘aeinstein’: {
‘first’: ‘albert’,
‘last’: ‘einstein’,
‘location’: ‘princeton’,
},
‘mcurie’: {
‘first’: ‘marie’,
‘last’: ‘curie’,
‘location’: ‘paris’,
},
}
for username, user_info in users.items():
print(f”\nUsername: {username}“)
full_name = f”{user_info[‘first’]} {user_info[‘last’]}"
location = user_info[‘location’]
print(f"\tFull name: {full_name.title()}“)
print(f”\tLocation: {location.title()}")

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
注意,表示每位用户的字典都具有相同的结构。虽然Python并没有这样的要求,但这使得嵌套的字典处理起来更容易。

相关内容

热门资讯

视频丨乌外长:乌方12日起实施... 转自:新华社 新华社基辅/莫斯科5月10日电(记者李东旭...
东南汽车城5条道路同步提升 国... 日前,位于闽侯县祥谦镇的七里产业园区,又一批备受市民关注的道路提升工程正加快建设,计划于今年国庆前建...
《CCF人工智能素养提升行动倡... 中新网上海5月11日电 (记者 陈静)记者11日获悉,由中国计算机学会(CCF)主办的第二届CCF公...
深化县域商业体系建设 转自:中国台湾网  县域是我国行政区域中面积最大、人口分布最多的地区,发展县域经济、健全县域商业体系...
中国超大规模市场是信心所在(走... 今年是海南自由贸易港封关运作之年。建设海南自由贸易港,是习近平总书记亲自谋划、亲自部署、亲自推动的重...
特斯拉得州奥斯汀工厂Model... IT之家 5 月 11 日消息,三名员工向 Business Insider 透露,特斯拉要求得州奥...
历经2个月退通卖压基本释放,行... 今年3月10日,港股通标的名单调整正式生效,因检讨期内市值表现未达标,瑞尔集团(06639)在当期被...
李凯馨事件回顾李凯馨的连番否认... 转自:JSTV荔枝视频 【#李凯馨事件回顾##李凯馨的连...
1至4月全国铁路完成固定资产投... 澎湃新闻记者从中国国家铁路集团有限公司(下称“国铁集团”)获悉,今年1至4月,铁路建设优质高效推进,...
升温模式开启 下周东北华北气温... 今明两天(5月11日至12日),随着南方降雨结束,全国大部都将以晴好天气为主,仅在海南岛、西藏东南部...
衡阳:快速响应 排查各类险情 转自:公安部新闻传媒5月8日至9日,湖南省衡阳市遭遇强降雨和大风天气,多处道路出现树木倒伏、护栏倒塌...
一榫一卯 凝注匠心(传承) 来源:人民日报在祁伟成的工作室里,迈步都要格外留神。搁架上、桌子上、地上,大大小小的木质模型见缝插针...
中国中铁全资子公司新增一项27... (转自:快查一企业中标了)快查APP显示,中国中铁相关公司中铁十局集团有限公司于2025年5月11日...
@同等学力申硕考生,5月18日... ​2025年同等学力人员申请硕士学位外国语水平和学科综合水平全国统一考试将于5月18日(星期日)举行...
2025年“边疆特产销全国·丹... 中新网丹东5月11日电 (记者 于海洋)2025年“边疆特产销全国·丹东站”活动10日在辽宁丹东启幕...
专访港投陈家齐:以耐心资本穿越... 在全球经济格局充满不确定性的当下,投资机构如何在波动中寻找机遇?作为中国香港特区政府重点打造的战略投...
快来!你家该出圈了 最近和妈妈联系了吗多久没吃妈妈做的饭菜了还记得上次妈妈唠叨你是什么时候吗有妈妈在的地方,就是家家是清...
花溪牛肉粉团体标准发布 近日,《贵州特色食品 花溪牛肉粉》及第1至5部分(米粉、牛肉、汤料、煳辣椒、酸菜)共6项团体标准正式...
美国长滩港货运量因关税暴跌三成... 转自:扬子晚报网美国加利福尼亚州长滩港是全球最繁忙的港口之一,近期受美国政府关税政策的影响,长滩港港...
夯根基 重科技 聚合力 提升现... 公安工作现代化是我国公安机关在保持自身特色与优势的基础上,将公安领域的理论与实践全面融入现代科学体系...