python字典

本章中学习能够将相关信息关联起来的python字典。学习如何访问和修改字典中的信息、存储字典的列表、存储列表的字典和存储字典的字典等,从而为各种真实物体准确建模。

目录

一.一个简单示例

二.遍历字典

1.遍历键和值

2.遍历所有键

3.遍历所有值

三.嵌套

1.在列表中存储字典

2.在字典中存储列表

3.在字典中存储字典



一.一个简单示例

#字典alien_0存储了外星人的颜色和点数
>>> alien_0={"color":"green","points":5}
>>> print(alien_0["color"])
green
>>> print(alien_0["points"])
5
#1.访问字典
>>> new_points=alien_0["points"]
>>> print("you just earned"+str(new_points)+"points!")
you just earned5points!
>>> print("you just earned"+ str(new_points) +"points!")
you just earned5points!
>>> print("you just earned "+ str(new_points) +" points!")
you just earned 5 points!
#2.添加键-值对
>>> alien_0["x_position"]=0
>>> alien_0["y_position"]=25
>>> print(alien_0)
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}
#3.修改字典中的值
>>> alien_0["color"]="yellow"
>>> print(alien_0["color"])
yellow
>>> print(alien_0)
{'color': 'yellow', 'points': 5, 'x_position': 0, 'y_position': 25}
#4.删除键值对
>>> del alien_0["x_position"]
>>> print(alien_0)
{'color': 'yellow', 'points': 5, 'y_position': 25}

python中,字典放在花括号{ }中,用一系列键-值对表示。键-值对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键-值对之间用逗号分隔。在字典中,你想存储多少个键-值对都可以。其中 str(new_points)将new_points变量的值转换为字符串类型。

你可以访问外星人alien_0的颜色和点数,如果玩家射杀了这个外星人,就可以使用代码确定玩家应该获得多少个点。键—值对的排列顺序与添加顺序可能不同。Python不关心键—值对的添加顺序,而只关心键和值之间的关联关系。

注意:注意print语句中在空格添加的位置,在str(new_points)前后添加空格是无效的,应该在双引号内添加对应空格。

二.遍历字典

1.遍历键和值

>>> alien_0={"color":"yellow","name":"nick","position":"active"}
>>> for key,value in alien_0.items():
...  print("\nkey:"+key)
...  print("value:"+value)
...

key:color
value:yellow

key:name
value:nick

key:position
value:active

编写遍历字典的for循环,声明两个变量用于存储键值对中的键和值items() 函数以列表返回可遍历的(键, 值) 元组, 将字典中的键值对以元组存储,并将众多元组存在列表中。循环依次将每个键值对存储到指定的两个变量中。

注意:当键值对中的值是数字而不是字符串时,使用上述代码执行会报错,但是可以利用函数str()将其转换为字符串类型,实现正常输出,如下所示:

>>> alien_0={'points': 5, 'x_position': 0, 'y_position': 25}
>>> for key,value in alien_0.items():
...  print("\nkey:"+key)
...  print("value:"+value)
...

key:points
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
TypeError: can only concatenate str (not "int") to str
#利用函数str()解决数值型输出问题
>>> alien_0={'points': 5, 'x_position': 0, 'y_position': 25}
>>> for key,value in alien_0.items():
...  print("\nkey:"+key)
...  print("value:"+str(value))
...

key:points
value:5

key:x_position
value:0

key:y_position
value:25

2.遍历所有键

#遍历字典中的所有键
>>> alien_0={"color":"yellow","position":"active","name":"nick"}
>>> for name in alien_0.keys():
...  print(name.title())
...
Color
Position
Name
#按顺序遍历字典中的所有键
>>> for name in sorted(alien_0.keys()):
...  print(name.title())
...
Color
Name
Position

在不需要使用字典中的值时,使用方法keys()它返回一个列表,其中包含字典中的所有键。for number in alien_0.keys():让python提取字典中的所有键,并依次将它们存储到变量number中。只需要声明一个变量用于存储键值对中的键。可使用函数sorted()在for循环中对返回的键进行排序,以特定的顺序返回元素。

3.遍历所有值

>>> for number in alien_0.values():
...  print(str(number))
...
5
0
25

三.嵌套

有时需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。

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)
...
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}

现实的情形是,外星人有很多个,每个外星人都是使用代码自动生成的,示例如下:

>>> aliens=[]
>>> for alien_number in range(30):
...  new_alien={"color":"green","point":5,"speed":"slow"}
...  aliens.append(new_alien)
...
>>> for alien in aliens[:5]:
...  print(alien)
...print("...")
{'color': 'green', 'point': 5, 'speed': 'slow'}
{'color': 'green', 'point': 5, 'speed': 'slow'}
{'color': 'green', 'point': 5, 'speed': 'slow'}
{'color': 'green', 'point': 5, 'speed': 'slow'}
{'color': 'green', 'point': 5, 'speed': 'slow'}
...
>>> print("total number of aliens:"+str(len(aliens)))
total number of aliens:30

2.在字典中存储列表

当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。

>>> aliens={"color":"green","point":5,"speed":"slow","compose":["metal","earth"]}

3.在字典中存储字典

>>> users={
...  "aeinstein":{
...   "first":"albert","last":"einstein","location":"princeton"},
...  "mcurie":{"first":"marie","last":"curie","location":"paris"}
... }
>>> for username,user_info in users.items():
...  print("\nusername:"+username)
...  full_name=user_info["first"]+" "+user_info["last"]
...  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

首先定义了一个名为users的字典,其中包含两个键:用户名“aeinstein”和“mcurie”;与每个键相关联的值都是一个字典,其中包含用户的名、姓和居住地。for username,user_info in users.items():实现遍历字典users,让python依次将每个键存储在变量username中,并依次将与当前键相关联的字典存储在变量user_info中;print("\nusername:"+username)将用户名打印出来。full_name=user_info["first"]+" "+user_info["last"]及location=user_info["location"]处,开始访问内部的字典,变量user_info包含用户信息字典,该字典包含三个键:“first”、“last”和“location”。

注:本文主要参考《python编程:从入门到实践》(【美】Eric Matthes著 袁国忠 译)第三、四章内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值