Python入门学习五:字典

在本文中主要讲述能将相关信息关联起来的Python字典,我们将一起学习如何访问和修改字典中的信息。字典可存储的信息量基本不受限制,因此本文会教你如何遍历字典。除此之外还将学习存储字典的列表、存储列表的字典以及存储字典的字典。
接下来,让我们开启学习之旅吧!!!

字典内置函数&方法列表

Python字典包含了以下内置函数:

序号 函数 描述
1 cmp(dict1, dict2) 比较两个字典元素
2 len(dict) 计算字典元素个数,即键的总数
3 str(dict) 输出字典可打印的字符串表示
4 type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型

Python字典包含了以下内置方法:

序号 函数 描述
1 dict.clear() 删除字典内所有元素
2 dict.copy() 返回一个字典的浅复制
3 dict.fromkeys(seq[, val]) 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
4 dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
5 dict.has_key(key) 如果键在字典dict里返回true,否则返回false
6 dict.items() 以列表返回可遍历的(键, 值) 元组数组
7 dict.keys() 以列表返回一个字典所有的键
8 dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
9 dict.update(dict2) 把字典dict2的键/值对更新到dict里
10 dict.values() 以列表返回字典中的所有值
11 pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
12 popitem() 返回并删除字典中的最后一对键和值。

1 理解字典

我们以一个例子来讲述什么是字典:

people_0 = {'first_name':'琪','last_name':'张','age':18,'city':'北京'}#将这个人的信息存在字典中
print(people_0['first_name'])#一一打印出来
print(people_0['last_name'])
print(people_0['age'])
print(people_0['city'])
#打印输出
琪
张
18
北京

2 使用字典

在Python中,字典 是一系列键—值对 。每个键 都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。在Python中,字典用放在花括号{} 中的一系列键—值对表示,如前面的示例所示:

people_0 = {'first_name':'琪','last_name':'张','age':18,'city':'北京'}

键—值 对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键—值对之间用逗号分隔。在字典中,你想存储多少个键—值对都可以。

2.1 访问字典中的值

这里创建一个外星人字典,里面包含颜色和点数两个键:

alien_0 = {'color':'green','points':5}#创建名为alien_0的字典
new_points = alien_0['points']#从该字典中获取与键“points”相关联的值,并将该值存储在new_points中
print("You just earned "+str(new_points)+" points!")#将获得的键值整数转换为字符串,并打印输出
#打印输出
You just earned 5 points!

2.2 添加键—值对

字典是一种动态结构,可随时添加键值对:

alien_0 = {'color':'green','points':5}
print(alien_0)
alien_0['x_position'] = 0#在字典alien_0中添加外星人的坐标值,新增键值对
alien_0['y_position'] = 25
print(alien_0)
#打印结果
{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}

在实际过程中,有时候需要创建空字典后再逐一添加键值对。

2.3 修改字典中的值

修改外星人字典中颜色键对应的键值:

alien_0 = {'color': 'green'}
print("The alien is " + alien_0['color'] + ".")
alien_0['color'] = 'yellow'#将原来的键值修改为yellow
print("The alien is now " + alien_0['color'] + ".")
#打印结果
The alien is green.
The alien is now yellow.

接下来是对于一个以不同速度移动的外星人位置的跟踪,如果以慢速度移动,则位移一个位置,若以中等速度移动,则位移2个位置,若以快速度移动则位移3个位置,而新的位置等于原来的位置加上增量。

alien_0 = {'x_position': 0, 'y_position': 25, 'speed': 'medium'}
print("Original x-position: " + str(alien_0['x_position']))
# 向右移动外星人
# 据外星人当前速度决定将其移动多远
if alien_0['speed'] == 'slow':
    x_increment = 1
elif alien_0['speed'] == 'medium':
    x_increment = 2
else:
# 这个外星人的速度一定很快
    x_increment = 3
# 新位置等于老位置加上增量
alien_0['x_position'] = alien_0['x_position'] + x_increment
print("New x-position: " + str(alien_0['x_position']))  
#打印结果
Original x-position: 0
New x-position: 2

2.4 删除键—值对

对于字典中不再需要的信息,可使用del语句将相应的键—值对彻底删除,使用del语句时必须指定字典名和要删除的键。

alien_0 = {'color':'green','points':5}
print(alien_0)
del alien_0['points']
print(alien_0)
#打印输出
{'color': 'green', 'points': 5}
{'color': 'green'}

2.5 由类似对象组成的字典

前面的示例中都是由字典来存储一个对象的多种信息,接下来我们学习用字典存储多个对象的同一种信息。需要使用多行来定义字典时,在输入左花括号后按回车键,再在下一行缩进四个空格,指定第一个键—值对,并在它后面加上一个逗号。此后你再次按回车键时,文本编辑器将自动缩进后续键—值对,且缩进量与第一个键—值对相同。
定义好字典后,在最后一个键—值对的下一行添加一个右花括号,并缩进四个空格,使其与字典中的键对齐。另外一种不错的做法是在最后一个键—值对后面也加上逗号,为以后在下一行添加键—值对做好准备。

Programming_vocabulary = {
    'class':'类',
    'abstract':'抽象',
    'access':'存取',
    'object':'对象',
    'out':'输出',
    'run':'运行',
    'print':'打印',
    }
print(Programming_vocabulary)
#打印结果
{'class': '类', 'abstract': '抽象', 'access': '存取', 'object': '对象', 'out': '输出', 'run': '运行', 'print': '打印'}

3 遍历字典

遍历时可遍历所有键—值对,也可只遍历键或值。

3.1 遍历所有的键—值对(items())

作为上一例的补充,我们将每个编程词汇及其意义通过遍历的方式打印出来:

Programming_vocabulary = {
    'class':'类',
    'abstract':'抽象',
    'access':'存取',
    'object':'对象',
    'out':'输出',
    'run':'运行',
    'print':'打印',
    }
for voc,meaning in Programming_vocabulary.items():#运用for循环遍历字典中的所有键—值对,键存储在变量voc中,值存储在meaning中。其中方法items()返回一个键—值对列表
    print(voc.title()+" : "+meaning)
    #打印结果
    Class : 类
    Abstract : 抽象
    Access : 存取
    Object : 对象
    Out : 输出
    Run : 运行
    Print : 打印

3.2 遍历字典中的所有键(keys())

在不需要使用字典中的值时,运用方法key()来获取字典中的键很必要。比如我们将上例中所有编程语言打印出来:

Programming_vocabulary = {
    'class':'类',
    'abstract':'抽象',
    'access':'存取',
    'object':'对象',
    'out':'输出',
    'run':'运行',
    'print':'打印',
    }
for voc in Programming_vocabulary.keys():#方法keys()将字典中的键取出存储在变量voc中,其中的keys()其实是可以省略的
    print(voc.title())
    #打印结果
    Class
    Abstract
    Access
    Object
    Out
    Run
    Print

在遍历过程中,键—值对返回的顺序总是难以预测的,若要以特定的顺序来返回键列表,则需要使用sorted()方法。

3.3 遍历字典中的所有值(values())

若在返回结果中只想要获取值,而不要任何键的信息,则使用方法values()可以实现,同样以上述示例为例:

Programming_vocabulary = {
    'class':'类',
    'abstract':'抽象',
    'access':'存取',
    'object':'对象',
    'out':'输出',
    'run':'运行',
    'print':'打印',
    }
for meaning in Programming_vocabulary.values():#方法keys()将字典中的键取出存储在变量voc中
    print(meaning)
    #打印结果
    类
   抽象
   存取
   对象
   输出
   运行
   打印

需要注意的是,如果需要打印出来的值是独一无二的,则需要对包含重复元素的列表调用set() ,可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合。

4 嵌套

有时候会将字典存储于列表中,或将列表作为存储在字典中,这就称之为嵌套。

4.1 字典列表

我们使用range()产生30个外星人:

# 创建一个用于存储外星人的空列表
aliens = []
# 创建30个绿色的外星人
for alien_number in range(30):#循环30次,每循环一次,创建一个外星人。
    new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
    aliens.append(new_alien)#并将每次新创建的外星人附加在aliens列表的末尾
# 显示前五个外星人
for alien in aliens[:5]:#运用之前所学切片的方式打印前五个外星人
    print(alien)
print("...")
# 显示创建了多少个外星人
print("Total number of aliens: " + str(len(aliens)))#用len()来计算列表的长度
#打印结果
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
...
Total number of aliens: 30

这里创建的30个外星人每一个都是独立的,可对其进行修改,假如我们将前五个外星人的
颜色改为黄色,点数改为10个,速度改为fast。

# 创建一个用于存储外星人的空列表
aliens = []
# 创建30个绿色的外星人
for alien_number in range(30):#循环30次,每循环一次,创建一个外星人。
    new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
    aliens.append(new_alien)#并将每次新创建的外星人附加在aliens列表的末尾
for alien in aliens[0:5]:    
    if alien['color'] == 'green':   #if 语句来确保只修改绿色外星 
        alien['color'] = 'yellow'        
        alien['speed'] = 'fast'        
        alien['points'] = 10
# 显示前五个外星人 
for alien in aliens[0:6]:    
    print(alien) 
print("...")
#打印结果
{'color': 'yellow', 'points': 10, 'speed': 'fast'}
{'color': 'yellow', 'points': 10, 'speed': 'fast'}
{'color': 'yellow', 'points': 10, 'speed': 'fast'}
{'color': 'yellow', 'points': 10, 'speed': 'fast'}
{'color': 'yellow', 'points': 10, 'speed': 'fast'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
...  

4.2 在字典中存储列表

每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个 列表。
例:喜欢的地方 :创建一个名为favorite_places 的字典。在这 个字典中,将三个人的名字用作键;对于其中的每个人,都存储他 喜欢的1~3个地方。遍历这个字典,并将其中每个人的名字及其喜 欢的地方打印出来。

favorite_places = {
    'lily' : ['西湖','南湖','天安门'],
    'lilian' : ['青海','颐和园','杜甫草堂'],
    'wangmin' : ['建水','杭州','南京'],
    'bily' : ['美国','湖南','澎湖湾'],
    }
for name, places in favorite_places.items(): #遍历字典     
    print("\n" + name.title() + "'s favorite places are:")     
    for place in places : #遍历地名         
        print("\t" + place.title())

4.3 在字典中华存储字典

例如,如 果有多个网站用户,每个都有独特的用户名,可在字典中将用户名作为 键,然后将每位用户的信息存储在一个字典中,并将该字典作为与用户名相关联的值。在下面的程序中,对于每位用户,我们都存储了其三项 信息:名、姓和居住地;为访问这些信息,我们遍历所有的用户名,并访问与每个用户名相关联的信息字典:
我们首先定义了一个名为users 的字典,其中包含两个键:用户 名’aeinstein’ 和’mcurie’ ;与每个键相关联的值都是一个字典,其 中包含用户的名、姓和居住地。

 users = {      
     'aeinstein': {          
          'first': 'albert',          
          'last': 'einstein',          
          'location': 'princeton',          
          },
      'mcurie': {          
          'first': 'marie',          
          'last': 'curie',          
          'location': 'paris',          
          },
      }
for username, user_info in users.items():#我们遍历字典users ,让 Python依次将每个键存储在变量username 中,
                                         #并依次将与当前键相关 联的字典存储在变量user_info 中。     
    print("\nUsername: " + username)  #打印username    
    full_name = user_info['first'] + " " + user_info['last']# 变量user_info 包含用户信息字典,
                                                            #而该字典包含三个键:'first' 、'last' 和'location'      
    location = user_info['location']
    print("\tFull name: " + full_name.title())      
    print("\tLocation: " + location.title())
#打印输出
Username: aeinstein
	Full name: Albert Einstein
	Location: Princeton

Username: mcurie
	Full name: Marie Curie
	Location: Paris

本文结束,谢谢阅读,后续会接着更新Python入门学习知识,敬请阅读,谢谢!!!

参考博客:https://blog.csdn.net/qq_40265974/article/details/103912304
参考书籍:《Python编程从入门到实践》

发布了8 篇原创文章 · 获赞 0 · 访问量 1207

猜你喜欢

转载自blog.csdn.net/qq_40074819/article/details/104274178
今日推荐