第6章. 字典

  • 6.1 一个简单的字典
  • 6.2 使用字典
  • 6.2.1 访问字典中的值
  • 6.2.2 添加键值对
  • 6.2.3 先创建一个空字典
  • 6.2.4 修改字典中的值
  • 6.2.5 删除键值对
  • 6.2.6 由类似对象组成的字典
  • 6.2.7 使用 get() 来访问值
  • 6.3 遍历字典
  • 6.3.1 遍历所有键值对
  • 6.3.2 遍历字典中的所有键
  • 6.3.3 按特定顺序遍历字典中的所有键
  • 6.3.4 遍历字典中的所有值
  • 6.4 嵌套
  • 6.4.1 字典列表
  • 6.4.2 在字典中存储列表
  • 6.4.3 在字典中存储字典
  • 6.1 一个简单的字典

示例:

1 alien_0 = {'color':'green','points':5}
2 print(alien_0['color'])
3 print(alien_0['points'])

运行结果:

  

 

  • 6.2 使用字典

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

  在 Python 中,字典用放在花括号 { } 中的一系列键值对表示。

  键和值之间用冒号分隔,而键值对之间逗号分隔。在字典中,想存储多少个键值对都可以。

 

  • 6.2.1 访问字典中的值

  要获取与键相关联的值,可依次指定字典名和放在方括号内的键

示例:

1 alien_0 = {'color':'green','points':5}
2 print(alien_0['color'])

运行结果:

  

 

  • 6.2.2 添加键值对

  字典是一种动态结构,可随时在其中添加键值对。要添加键值对,可依次指定字典名用方括号括起的键相关联的值

示例:

1 alien_0 = {'color':'green','points':5}
2 print(alien_0)
3 
4 alien_0['x_position'] = 0
5 alien_0['y_position'] = 25
6 print(alien_0)

运行结果:

  

 

  • 6.2.3 先创建一个空字典

  可使用一对空花括号定义一个字典。

示例:

1 alien_0 = {}
2 print(alien_0)
3 
4 alien_0['color'] = 'green'
5 alien_0['points'] = 5
6 print(alien_0)

运行结果:

  

 

  • 6.2.4 修改字典中的值

  要修改字典中的值,可依次指定字典名,用方括号括起的键,以及与该键相关联的新值。

示例:

1 alien_0 = {'color':'green'}
2 print(f"The alien is {alien_0['color']}.")
3 
4 alien_0['color'] = 'yellow'
5 print(f"The alien is now {alien_0['color']}.")

运行结果:

  

 

  • 6.2.5 删除键值对

  可使用 del 语句将相应的键值对彻底删除。使用 del 语句时,必须指定字典名和要删除的键

  删除的键值对会永远消失。

示例:

1 alien_0 = {'color':'green','points':5}
2 print(alien_0)
3 
4 del alien_0['points']
5 print(alien_0)

运行结果:

  

 

  • 6.2.6 由类似对象组成的字典

  确定需要使用多行来定义字典时,要在输入左花括号后按回车键。在下一行缩进四个空格,指定第一个键值对,并在它后面加上一个逗号

  一种不错的做法是,在最后一个键值对后面也加上逗号,为以后在下一行添加键值对做好准备。

示例:

1 favorite_languages = {
2     'jen':'python',
3     'sarah':'c',
4     'edward':'ruby',
5     'phil':'python',
6 }
7 
8 language = favorite_languages['sarah'].title()
9 print(f"Sarah's favorite language is {language}.")

运行结果:

  

 

  • 6.2.7 使用 get() 来访问值

  使用放在方括号内的键从字典中获取感兴趣的值时,可能会引发问题:如果指定的键不存在就会出错。

  可使用方法 get() 在指定的键不存在时返回一个默认值,从而避免这样的错误。

  方法 get() 的第一个参数用于指定键,是必不可少的;第二个参数为指定的键不存在时要返回的值,是可选的

  如果字典中有要查询的键,将获得与之相关联的值;如果没有,将获得指定的默认值。

  调用 get() 时,如果没有指定第二个参数且指定的键不存在,Python 将返回值 None

示例:

1 alien_0 = {'color':'green','speed':'slow'}
2 
3 point_value = alien_0.get('points','No point value assigned.')
4 print(point_value)

运行结果:

  

 

  • 6.3.1 遍历所有键值对

  方法 items() 返回一个键值对列表。

示例:

1 user_0 = {
2     'username':'efermi',
3     'first':'enrico',
4     'last':'fermi',
5 }
6 
7 for k,v in user_0.items():  # k和v 两个变量
8     print(f"\nKey:{k}")
9     print(f"Value:{v}")

运行结果:

  

 

  • 6.3.2 遍历字典中的所有键

  在不需要使用字典中的值时,方法 keys() 很有用。

示例:

1 favorite_languages = {
2     'jen':'python',
3     'sarah':'c',
4     'edward':'ruby',
5     'phil':'python',
6 }
7 
8 for name in favorite_languages.keys():
9     print(name.title())

运行结果:

  

 

遍历字典时,会默认遍历所有的键。因此,如果将上述代码中的:

1 for name in favorite_languages.keys():

替换为:

1 for name in favorite_languages:

 输出将不变

 

  • 6.3.3 按特定顺序遍历字典中的所有键

  方法 keys() 实际上返回一个列表,其中包含字典中的所有键

  可使用函数 sorted() 来获得按特定顺序排列的键列表的副本。

示例:

1 favorite_languages = {
2     'jen':'python',
3     'sarah':'c',
4     'edward':'ruby',
5     'phil':'python',
6 }
7 
8 for name in sorted(favorite_languages.keys()):
9     print(name.title())

运行结果:

  

 

  • 6.3.4 遍历字典中的所有值

  可使用方法 values() 来返回一个值列表不包含任何键

 1 favorite_languages = {
 2     'jen':'python',
 3     'sarah':'c',
 4     'edward':'ruby',
 5     'phil':'python',
 6 }
 7 
 8 print("The following languages have been mentioned:")
 9 for language in favorite_languages.values():
10     print(language.title())

运行结果:

  

 

  为剔除重复项,可使用集合 set集合中的每个元素都是独一无二的

 1 favorite_languages = {
 2     'jen':'python',
 3     'sarah':'c',
 4     'edward':'ruby',
 5     'phil':'python',
 6 }
 7 
 8 print("The following languages have been mentioned:")
 9 for language in set(favorite_languages.values()):
10     print(language.title())

运行结果:

  

 

  可使用花括号直接创建集合,并在其中用逗号分隔元素

1 languages = {'python','ruby','python','c'}
2 print(languages)

运行结果:

  

  集合和字典很容易混淆,因为它们都是用一对花括号定义的。当花括号内没有键值对时,定义的很可能是集合。不同于列表和字典,集合不会以特定的顺序存储元素

 

  • 6.4.1 字典列表
1 alien_0 = {'color':'green','points':5}
2 alien_1 = {'color':'yellow','points':10}
3 alien_2 = {'color':'red','points':15}
4 
5 aliens = [alien_0,alien_1,alien_2]
6 
7 for alien in aliens:
8     print(alien)

运行结果:

  

 

 

 

  • 6.4.2 在字典中存储列表
1 pizza = {
2     'crust':'thick',
3     'toppings':['mushrooms','extra cheese'],
4 }
5 
6 print(f"You ordered a {pizza['crust']}-crust pizza with the following toppings:")
7 for topping in pizza['toppings']:
8     print("\t" + topping)

res:

  

 

  • 6.4.3 在字典中存储字典
 1 users = {
 2     'aeinstein':{
 3         'first':'albert',
 4         'last':'einstein',
 5         'location':'princeton',
 6     },
 7 
 8     'mcurie':{
 9         'first':'marie',
10         'last':'curie',
11         'location':'paris',
12     },
13 }
14 
15 for username,user_info in users.items():
16     print(f"Username:{username}")
17     full_name = f"{user_info['first']} {user_info['last']}"
18     location = user_info['location']
19 
20     print(f"\tFull name:{full_name.title()}")
21     print(f"\tLocation:{location.title()}")

res:

  

(〃>_<;〃)(〃>_<;〃)(〃>_<;〃)

posted @ 2023-06-05 22:05  我会变强的  阅读(4)  评论(0编辑  收藏  举报