文章目录
1. 字典的使用
1.1 创建一个字典
- 在之前的文章中有提到过字典,字典用放在花括号"{ }"中的一系列键-值对表示,例如:
alien = {'color': 'green', 'points': 5}
- 键-值对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值直接用":“分隔,键-值对直接用”,"分隔。
1.2 访问字典中的值
- 要获取与键相关联的值,可依次指定字典名和放在方括号内的键,举例:
alien_0 = {'color': 'green'}
print(alien_0['color'])
> 输出:
green
1.3 添加键-值对
- 字典是一种动态结构,可随时在其中添加键-值对。
- 添加键-值对,可依次指定字典名、用放方括号括起的键和相关联的值。
alien_0 = {'color': 'green'}
alien_0['points'] = 5
print(alien_0)
> 输出:
{'color': 'green', 'points': 5}
1.4 修改字典中的值
- 修改字典中的值,只需要依 次指定字典名、用方括号括起的键和需要改变的值就可以了。
alien_0 = {'color': 'green'}
alien_0['color'] = 'yellow'
print(alien_0['color'])
> 输出:
yellow
1.5 删除键-值对
- 对于字典中不在需要的信息,可使用del语句将对应的键-值对彻底删除。使用del语句时,必须指定字典名和要删除的键。
alien = {'color': 'green', 'points': 5}
del alien['points']
print(alien)
> 输出:
{'color': 'green'}
2. 遍历字典
方法 | 效果 |
---|---|
items() | 字典中所有的键-值对 |
keys() | 字典中所有的键 |
values() | 字典中所有的值 |
案例:
favorite_languages = {
'jen': 'python',
'sarch': 'c',
'edward': 'java',
'phil': 'python'
}
2.1 遍历所有的键-值对
- 最常规的做法是:
for name, language in favorite_languages.items():
print(name, language)
> 输出:
jen python
sarch c
edward java
phil python
- 你还可以这样做:
for name in favorite_languages.keys():
print(name, favorite_languages[name])
> 输出:
jen python
sarch c
edward java
phil python
2.2 遍历所有的键
for name in favorite_languages.keys():
print(name)
> 输出:
jen
sarch
edward
phil
2.3 遍历所有的值
for language in favorite_languages.values():
print(language)
> 输出:
python
c
java
python
- 在提取值的时候,可能有些值是重复的,我们仅仅只想知道有多少中类型的值,而不是知道所有的值,要想达到这样的结果,这个时候就体现了集合的重要性了。
for language in set(favorite_languages.values()):
print(language)
> 输出:
python
c
java
2.4 按顺序遍历字典中的所有键或值
- 只需要使用sorted函数(sorted函数具有临时性)就可以了
for name in sorted(favorite_languages.keys()):
print(name, favorite_languages[name])
> 输出:
edward java
jen python
phil python
sarch c
3. 字典与列表的嵌套
3.1 在列表中存储字典
- 我们先简单创建一个字典列表,首先我们需要创建几个字典,并将他们放进列表:
# 先创建3个字典,表示3类外星人的信息
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]
print(aliens)
> 输出:
[{'color': 'green', 'points': 5}, {'color': 'yellow', 'points': 10}, {'color': 'red', 'points': 15}]
- 当然,在实际应用中,可能需要动态的存储一些数据
# 先创建一个空列表
aliens = []
# 存储3个红色外星人
for alien_number in range(3):
new_alien = {'color': 'red'}
aliens.append(new_alien)
# 存储2个黄色外星人
for alien_number in range(2):
new_alien = {'color': 'yellow'}
aliens.append(new_alien)
print(aliens)
> 输出:
[{'color': 'red'}, {'color': 'red'}, {'color': 'red'}, {'color': 'yellow'}, {'color': 'yellow'}]
- 代码中的range函数可以创建一系列的数字,从而达到循环的目的。range(2)即为range(0, 2, 1)由0到2,每次递增1。
3.2 在字典中存储列表
- 无非就是照猫画虎,举个例子就都懂了:
favorite_languages = {
'jen': ['python', 'ruby'],
'sarah': ['c'],
'edward': ['ruby', 'go'],
'phil': ['python', 'haskell'],
}
for name, languages in favorite_languages.items():
print(name.title() + " 's favorite languages are:")
for language in languages:
print("\t" + language.title())
> 输出:
Jen 's favorite languages are:
Python
Ruby
Sarah 's favorite languages are:
C
Edward 's favorite languages are:
Ruby
Go
Phil 's favorite languages are:
Python
Haskell
3.3 在字典中存储字典
- 如果你需要做一个学生成绩管理系统,你需要将存储不同班级内的不同学生的不同信息,这个时候这种办法就可以办到:
students = {
'john': {
'math': 100,
'chinese': 150,
'english': 50,
},
'mike': {
'math': 200,
'chinese': 250,
'english': 150,
},
}
for name, info in students.items():
print(name + "'s scores are: " + str(sum(info.values())))
> 输出:
john's scores are: 300
mike's scores are: 600
- 其中sum()函数是用来求列表中数值总和的。