直接看程序
#定义一个字典 —— 确定玩家射杀外星人获得的点数
alien_0 = {'color': 'green', 'points': 5} #此处的color,points叫键key; key后面的内容叫值values
new_points = alien_0['points'] #查找字典内容
print("You just earned " + str(new_points) + " points!")
print("-----------------------------------------------")
#输出字典内容
print(alien_0)
#在创建好的字典中增加一些内容
alien_0['x_position'] = 0 #在字典中新增键-值对,键key就是'x_position',值values为 0
alien_0['y_position'] = 25
print(alien_0)
#也可以先创建一个空字典,然后增加 键-值对
alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5
print(alien_0)
print("-----------------------------------------------")
#删除键值对
alien_0 = {'color': 'green', 'points': 5} #还是这个字典
del alien_0['points'] #删除点数这个键-值对
print(alien_0) #输出看看字典的变化
运行结果
You just earned 5 points!
-----------------------------------------------
{'color': 'green', 'points': 5}
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}
{'color': 'green', 'points': 5}
-----------------------------------------------
{'color': 'green'}
跟踪不同速度的外星人
#跟踪不同速度的外星人
alien_0 = {'x_position': 0, 'y_position': 25, 'speed': 'fast'} #定义外星人‘位置字典’
print("Oringal x_position: " + str(alien_0['x_position']))
#向右移动的外星人
#据外星人移动速度决定其移动多远
if alien_0['speed'] == 'slow':
x_increment = 1
elif alien_0['speed'] == 'medium':
x_increment = 2
else: #最后一句,要么是else: 要么是elif + 条件:
x_increment = 3 #这个外星人速度一定很快
alien_0['x_position'] = alien_0['x_position'] + x_increment #新位置=老位置+增量
print("New X-position: " + str(alien_0['x_position']))
运行结果
Oringal x_position: 0
New X-position: 3
#动手试一试 —— 使用字典来存储自己熟悉的人的信息,包括姓名、性别、家乡和所在地
information = { 'ZH': 'girl, dafeng, shanghai', 'ZY': 'boy, donghai, shanghai',
'ZJ': 'girl, baoying, beijing', 'XS': 'boy, rugao, japan'}
print(information['XS'].title()) #查找一个叫XS的信息 并首字母大写(可以直接使用字典信息)
运行结果
Boy, Rugao, Japan
#遍历字典 —— 还是使用刚才创建的字典(朋友信息)
information = {
'ZH': 'girl, dafeng, shanghai',
'ZY': 'boy, donghai, shanghai',
'ZJ': 'girl, baoying, beijing',
'XS': 'boy, rugao, japan' } #这样写字典信息写看起来清晰很多
#items()函数返回一个键-值对列表:
for name, info in information.items(): #把字典里的名称name,对应的信息info 遍历一遍
print("\nName: " + name.title()) #输出顺便取个首字母大写
print("Info: " + info.title())
运行结果
Name: Zh
Info: Girl, Dafeng, ShanghaiName: Zy
Info: Boy, Donghai, ShanghaiName: Zj
Info: Girl, Baoying, BeijingName: Xs
Info: Boy, Rugao, Japan
仅遍历字典中的键key或值value —— keys()函数或values()函数
#遍历字典中的所有键key或者值value —— keys()函数 和 values()函数
information = {
'ZH': 'girl, dafeng, shanghai',
'ZY': 'boy, donghai, shanghai',
'ZJ': 'girl, baoying, beijing',
'XS': 'boy, rugao, japan' }
for name in information.keys():#用keys()函数只取键key
print(name.title()) #打印出所有name
#其实遍历字典默认遍历所有键key,但是用keys()函数会更容易理解。
#以下代码输出和上面的完全一致。
# for name in information:
# print("name.title()")
#当然也可以只遍历所有值value
for info in information.values():
print(info.title())
运行结果
Zh
Zy
Zj
Xs
Girl, Dafeng, Shanghai
Boy, Donghai, Shanghai
Girl, Baoying, Beijing
Boy, Rugao, Japan
#当然还可以加入一些条件
information = {
'ZH': 'girl, dafeng, shanghai',
'ZY': 'boy, donghai, shanghai',
'ZJ': 'girl, baoying, beijing',
'XS': 'boy, rugao, japan' }
we = ['ZY', 'ZH']
for name in information.keys():
print(name.upper())
if name in we: #遍历到的信息如果在we里就执行下面的内容
print(name.upper() + " NB!")
运行结果
ZH
ZH NB!
ZY
ZY NB!
ZJ
XS
#你可以用keys()函数来确定某个键(例如是人名)在不在字典里
information = {
'ZH': 'girl, dafeng, shanghai',
'ZY': 'boy, donghai, shanghai',
'ZJ': 'girl, baoying, beijing',
'XS': 'boy, rugao, japan' }
if 'MF' not in information.keys(): #检测这个人名在不在字典里,不在的话执行下面的内容
print("MF, please give your information!")
运行结果
MF, please give your information!
按顺序遍历字典中 —— sorted()函数
#按顺序遍历字典中 —— sorted()函数
MathGrade = {
'Shishang': 98,
'Lvyuetong': 100,
'Dishiyu': 97,
'Shensixuan': 91,
}
for score in sorted(MathGrade.values()):
print('score sorted: ' + str(score))
#当然你也可以按人名排序
for name in sorted(MathGrade.keys()):
print(name.title())
#目前位置还不知道如何把键值对同步排序并输出,我们接着来看
运行结果
score sorted: 91
score sorted: 97
score sorted: 98
score sorted: 100
Dishiyu
Lvyuetong
Shensixuan
Shishang
91
97
98
100
剔除重复项
#我们先来解决另一个问题 —— 假设字典中有很多键值对并存在重复
#现在的问题是能不能剔除重复项 —— 集合set()函数。例如下面的程序:
names = {
'A':'ZYY',
'B':'ZH',
'C':'ZYY',
'D':'LPP',
'A':'LGJ',
'B':'XS'
}
for name in set(names.values()):
print(name) #可见重复的名字被剔除了
运行结果
LGJ
LPP
ZYY
XS
动手试一试 —— 6-5 创建河流信息字典
#动手试一试 —— 6-5 创建河流信息字典
RiverInformation = {
'nile': 'Egypt, the third largest river and the first long river.',
'yangtze': 'China, the second largest river.',
'amazon': 'Brazil, the largest river in the world.'
}
for name, info in RiverInformation.items(): #字典的键值对分别送到 name和info
print(str(name.title()) + ' runs through ' + str(info)) #使用str()函数转化为字符串格式
#只打印键keys 或 值values
for name in RiverInformation.keys():
print(name.title())
for info in RiverInformation.values():
print(info)
#目前很想知道怎么通过循环打印一个键并打印对应的值,后面在解决这个问题
Date 2018年12月29日
5e29f89f28102497ecdbb1fecf6e5aba.jpg
网友评论