python 学习之字典
愿你遇见温柔的人

1引言
python 里 字典 还是比较有用的,储存了多个 键值对 元素,每个元素都有其对应的 key 和 value, 怎么对其进行操作和处理,我们来学习一下。
2简单的字典
alien_0 = {'color': 'green', 'points': 5}
print(alien_0['color'])
print(alien_0['points'])
green
5
3使用字典
在 Python 中,字典 是一系列键值对 。每个键 都与一个值相关联,你可使用键来访问相关联的值。与键相关联的值可以是数、字符串、列表乃至字典。事实上,可将任何 Python 对象用作字典中的值。
在 Python 中,字典用放在花括号( {} )中的一系列键值对表示,键值对 是两个相关联的值。指定键时,Python 将返回与之相关联的值。键和值之间用 冒号分隔,而键值对之间用 逗号分隔。在字典中,想存储多少个键值对都可以。
访问字典中的值
要获取与键相关联的值,可依次指定字典名和放在方括号内的键,如下所示:
alien_0 = {'color': 'green'}
print(alien_0['color'])
green
添加键值对
字典是一种动态结构,可随时在其中添加键值对。要添加键值对,可依次指定字典名、用方括号括起的键和相关联的值:
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}
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}
先创建一个空字典
在空字典中添加键值对有时候可提供便利,而有时候必须这样做。为此,可先使用一对空花括号定义一个字典,再分行添加各个键值对。例如,下面演示了如何以这种方式创建字典 alien_0 :
alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)
{'color': 'green', 'points': 5}
使用字典来存储用户提供的数据或在编写能自动生成大量键值对的代码时,通常需要先定义一个空字典。
修改字典中的值
要修改字典中的值,可依次指定字典名、用方括号括起的键,以及与该键相关联的新值:
alien_0 = {'color': 'green'}
print(f"The alien is {alien_0['color']}.")
alien_0['color'] = 'yellow'
print(f"The alien is now {alien_0['color']}.")
The alien is green.
The alien is now yellow.
删除键值对
对于字典中不再需要的信息,可使用 del 语句 将相应的键值对彻底删除。使用 del 语句时,必须指定字典名和要删除的键:
alien_0 = {'color': 'green', 'points': 5}
print(alien_0)
del alien_0['points']
print(alien_0)
{'color': 'green', 'points': 5}
{'color': 'green'}
由类似对象组成的字典
在前面的示例中,字典存储的是一个对象(游戏中的一个外星人)的多种信息,但你也可以使用字典来存储众多对象的同一种信息:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
使用 get() 来访问值
使用放在方括号内的键从字典中获取感兴趣的值时,可能会引发问题:如果指定的键不存在就会出错:
alien_0 = {'color': 'green', 'speed': 'slow'}
print(alien_0['points'])
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-7-3914d637e9f3> in <module>
1 alien_0 = {'color': 'green', 'speed': 'slow'}
----> 2 print(alien_0['points'])
KeyError: 'points'
就字典而言,可使用方法 get() 在指定的键不存在时返回一个默认值,从而避免这样的错误。
方法 get() 的第一个参数用于指定键,是必不可少的;第二个参数为指定的键不存在时要返回的值,是可选的:
alien_0 = {'color': 'green', 'speed': 'slow'}
point_value = alien_0.get('points', 'No point value assigned.')
print(point_value)
No point value assigned.
如果指定的键有可能不存在,应考虑使用方法 get() ,而不要使用方括号表示法。
注意: 调用 get() 时,如果没有指定第二个参数且指定的键不存在,Python 将返回值 None 。这个特殊值表示没有相应的值。None 并非错误,而是一个表示所需值不存在的特殊值。
4遍历字典
一个 Python 字典可能只包含几个键值对,也可能包含数百万个键值对。鉴于字典可能包含大量数据,Python 支持对字典进行遍历。字典可用于以各种方式存储信息,因此有多种遍历方式:可遍历字典的所有键值对,也可仅遍历键或值。
遍历所有键值对
如果要获悉该用户字典中的所有信息,该如何办呢?可使用 for 循环来遍历这个字典:
user_0 = {
'username': 'efermi',
'first': 'enrico',
'last': 'fermi',
}
for key, value in user_0.items():
print(f"nKey: {key}")
print(f"Value: {value}")
Key: username
Value: efermi
Key: first
Value: enrico
Key: last
Value: fermi
要编写遍历字典的 for 循环,可声明两个变量,用于存储键值对中的键和值。这两个变量可以使用任意名称。下面的代码使用了简单的变量名,这完全可行:
for k, v in user_0.items()
for 语句的第二部分包含字典名和方法 items() ,它返回一个键值对列表。接下来,for 循环依次将每个键值对赋给指定的两个变量。
遍历字典中的所有键
在不需要使用字典中的值时,方法 keys() 很有用:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
for name in favorite_languages.keys():
print(name.title())
Jen
Sarah
Edward
Phil
按特定顺序遍历字典中的所有键
要以特定顺序返回元素,一种办法是在 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.")
Edward, thank you for taking the poll.
Jen, thank you for taking the poll.
Phil, thank you for taking the poll.
Sarah, thank you for taking the poll.
遍历字典中的所有值
如果主要对字典包含的值感兴趣,可使用方法 values() 来返回一个值列表,不包含任何键:
favorite_languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
print("The following languages have been mentioned:")
for language in favorite_languages.values():
print(language.title())
The following languages have been mentioned:
Python
C
Ruby
Python
这种做法提取字典中所有的值,而没有考虑是否重复, 列表可能包含大量重复项。为剔除重复项,可使用集合(set)。集合 中的每个元素都必须是独一无二的:
for language in set(favorite_languages.values()):
print(language.title())
Ruby
C
Python
5嵌套
有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套 。你可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。正如下面的示例将演示的,嵌套是一项强大的功能。
字典列表
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)
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}
在字典中存储列表
有时候,需要将列表存储在字典中,而不是将字典存储在列表中:
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(topping)
You ordered a thick-crust pizza with the following toppings:
mushrooms
extra cheese
在字典中存储字典
可在字典中嵌套字典,但这样做时,代码可能很快复杂起来:
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()}")
Username: aeinstein
Full name: Albert Einstein
Location: Princeton
Username: mcurie
Full name: Marie Curie
Location: Paris
6小结
在本章中,你学习了:如何 定义字典,以及如何 使用存储在字典中的信息;如何 访问和修改字典中的元素,以及如何 遍历字典中的所有信息;如何 遍历字典中所有的键值对、所有的键和所有的值;如何在 列表中嵌套字典、在字典中嵌套列表以及在字典中嵌套字典。

欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群
哦,数据代码已上传至QQ群,欢迎加入下载。
群二维码:

老俊俊微信:
知识星球:
所以今天你学习了吗?
欢迎小伙伴留言评论!
今天的分享就到这里了,敬请期待下一篇!
最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!
如果觉得对您帮助很大,赏杯快乐水喝喝吧!
往期回顾
◀组会文献分享 — YTHDF2 介导靶基因 mRNA 降解参与前列腺癌进展
◀…
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!