• 学习笔记5(第六章:字典)


    1、在Python中,字典是一系列键-值对。每个键都与一个值相关联,可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。

    2、字典用放在花括号{}中的一系列键-值对表示,键和值之间用冒号分隔,键-值对之间用逗号隔开。

    3、键-值对的排列顺序与添加顺序不同。Python不关心键-值对的添加顺序,而只关心键和值之间的关联关系。(笔者没有试验成功,但是书上是这样写的)

       创建一个空字典,添加元素:

    alien_0 = {}
    alien_0['x_position'] = 0
    alien_0['y_position'] = 25
    alien_0['speed'] = 'medium'
    print(alien_0)

       输出的字典键-值顺序依然和添加一样,可能书上所说的是个例。

    {'x_position': 0, 'y_position': 25, 'speed': 'medium'}

    4、字典可以存储一个对象的多种信息,也可以用来存储多个对象的同一种信息。

    alien_0 = {'color':'green','points':5}
    print(alien_0['color'])
    
    green

    对于较长的列表和字典,可以分行。

    favorite_languages = {
        'jier':'java',
        'juzi':'python',
        'tz':'csharp',
        }
    print("jier's favourite language is"+
          favorite_languages['jier'].title()+
          ".")
    
    
    jier's favourite language isJava.

    5、用for循环来遍历字典。注意,遍历字典时,键-值对的返回顺序与存储顺序也不一定相同。

       遍历字典favorite_language:

    for name,language in favorite_languages.items():
        print(name.title()+"'s favourite language is "+
          language.title()+".")

    输出结果:

    Jier's favourite language is Java.
    Juzi's favourite language is Python.
    Tz's favourite language is Csharp.

    6、遍历字典中的所有键。

    for name in favorite_languages.keys():
        print(name.title())

    提取键,并存储到name变量中,再输出。遍历字典时,会默认遍历所有的键,因此,keys()方法可以省略,直接 for name in favourite_languages:,输出不变。添加了keys()可以让代码更加容易理解。 

    Jier
    Juzi
    Tz

    可以使用keys()确定某个人是否在字典中。

    if 'erin' not in favorite_languages.keys():
        print("he isn't in ")

    7、字典总是明确记录键和值之间的关联关系,但获取字典的元素时获取顺序是不可预测的。可以调用sorted()函数,让Python列出字典中的所有键,并在遍历前对这个列表进行排序。

    for name in sorted(favorite_languages.keys()):
        print(name.title()+",thank you")

    8、使用方法values(),返回一个值列表,而不包含任何键。这种做法提取字典中所有的值,但没有考虑是否有重复。为剔除重复项,可使用集合(set)。集合类似于列表,但每个元素都必须独一无二。

    favorite_languages = {
        'jier':'java',
        'juzi':'python',
        'tz':'csharp',
        'xiao':'java'
        }
    for language in set(favorite_languages.values()):
        print(language.title())

    输出结果:

    Csharp
    Java
    Python

    9、将一系列字典存储在列表中,或将列表存储在字典中,这称为嵌套

       在列表中嵌套字典,使用rang()自动生成30个外星人:

    # 创建一个用于存储外星人的空列表
    aliens = []
    
    # 创建30个绿色的外星人
    for alien_number in range(30):
        new_alien = {'color': 'green', 'point': 5, 'speed': 'slow'}
        aliens.append(new_alien)
    
    # 修改前三个外星人
    for alien in aliens[0:3]:
        if alien['color'] == 'green':
            alien['color'] = 'yellow'
            alien['speed'] = 'medium'
            alien['point'] = 10
    
    # 显示前五个外星人
    for alien in aliens[:5]:
        print(alien)
    print("...")
    
    # 显示创建了多少个外星人
    print("Total number of aliens:" + str(len(aliens)))

    输出结果:

    {'color': 'yellow', 'point': 10, 'speed': 'medium'}
    {'color': 'yellow', 'point': 10, 'speed': 'medium'}
    {'color': 'yellow', 'point': 10, 'speed': 'medium'}
    {'color': 'green', 'point': 5, 'speed': 'slow'}
    {'color': 'green', 'point': 5, 'speed': 'slow'}
    ...
    Total number of aliens:30    

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

    favorite_languages = {
        'jier': ['java', 'ruby'],
        'juzi': ['python', 'c'],
        'tz': ['csharp'],
        'xiao': ['java', 'c']
    }
    for name, languages in favorite_languages.items():
        if len(languages) > 1:
            print("
    " + name.title() + "'s favourite language are:")
        else:
            print("
    " + name.title() + "'s favourite language is:")
        for language in languages:
            print("	" + language.title())

    输出结果:

    Jier's favourite language are:
    Java
    Ruby

    Juzi's favourite language are:
    Python
    C

    Tz's favourite language is:
    Csharp

    Xiao's favourite language are:
    Java
    C

     注意,与每个名字相关联的都是一个列表才可以用languages来依次存储字典中的每一个值。否则会得到的结果不是想要的。

    11、在字典中存储字典。定义了一个users的字典,其中包含两个键:用户名‘aeinstein’和‘mcurie’。

    users = {
        'asinstein':{
            'first':'albert',
            'last':'einstein',
            'location':'princeton'
        },
        'mcurie':{
            'first':'marie',
            'last':'curie',
            'location':'paris',
        },
    }
    for username,user_info in users.items():
        print("
    Username:"+username)
        full_name = user_info['first']+" "+user_info['last']
        location = user_info['location']
    
        print("	Full name:" +full_name.title())
        print("	Location:"+location.title())

      输出结果:

    Username:asinstein
        Full name:Albert Einstein
        Location:Princeton
    
    Username:mcurie
        Full name:Marie Curie
        Location:Paris
  • 相关阅读:
    Passbook教程中生成pass时遇到的“Couldn't find a passTypeIdentifier in the pass”
    几个app maker的网站
    forever start Error: Cannot find module './daemon.v0.10.26'
    [Effective Objective-C 读书笔记] 第1章 几条基本写法 (2~5条)
    在linux环境下配置node:node + npm + forever
    [技术翻译] 构建现代化的Objective-C (下)
    [技术翻译]构建现代化的 Objective-C (上)
    NSDate与 NSString 、long long类型的相互转化
    Java对象的序列化与反序列化:默认格式及JSON格式(使用jackson)
    基本网络请求
  • 原文地址:https://www.cnblogs.com/cathycheng/p/11180319.html
Copyright © 2020-2023  润新知