美文网首页
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