美文网首页
7 初识Python里的字典

7 初识Python里的字典

作者: 陪伴_520 | 来源:发表于2018-12-29 14:42 被阅读0次

直接看程序

#定义一个字典 —— 确定玩家射杀外星人获得的点数
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, Shanghai

Name: Zy
Info: Boy, Donghai, Shanghai

Name: Zj
Info: Girl, Baoying, Beijing

Name: 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

相关文章

网友评论

      本文标题:7 初识Python里的字典

      本文链接:https://www.haomeiwen.com/subject/rgwslqtx.html