zoukankan      html  css  js  c++  java
  • 读书笔记「Python编程:从入门到实践」_6.字典

    6.1 一个简单的字典

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

    6.2 使用字典  

      字典 是一系列键—值对 。每个键 都与一个值相关联,你可以使用键来访问与之相关联的值。

      与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。

      在Python中,字典用放在花括号 {}  中的一系列键—值对表示

      键和值之间用冒号分隔,而键—值对之间用逗号分隔。

      6.2.1 访问字典中的值

      要获取与键相关联的值,可依次指定字典名和放在方括号内的键 dic['key']
      6.2.2 添加键—值对

      字典是一种动态结构,可随时在其中添加键—值对。要添加键—值对,可依次指定字典名、用方括号括起的键和相关联的值。

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

      6.2.3 先创建一个空字典

      使用一对空的花括号定义一个字典,再分行添加各个键—值对。例如,下例演示了如何以这种方式创建字典alien_0

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

      6.2.4 修改字典中的值

      要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。例 alien_0['color'] = 'yellow'

      6.2.5 删除键—值对

      使用del 语句将相应的键—值对彻底删除。使用del 语句时,必须指定字典名和要删除的键。

      6.2.6 由类似对象组成的字典

      字典存储的是一个对象(游戏中的一个外星人)的多种信息,但你也可以使用字典来存储众多对象的同一种信息。例如,假设你要调查很多人,

      询问他们最喜欢的编程语言,可使用一个字典来存储这种简单调查的结果,如下所示:

    favorite_languages = {
        'jen': 'python',
        'sarah': 'c',
        'edward': 'ruby',
        'phil': 'python',
        }

    6.3 遍历字典

      6.3.1 遍历所有的键—值对

      for k, v in user_0.items()

      for 语句的第二部分包含字典名和方法items() ,它返回一个键—值对列表。接下来,for 循环依次将每个键—值对存储到指定的两个变量中。
      6.3.2 遍历字典中的所有键

      在不需要使用字典中的值时,方法keys() 很有用。
      6.3.3 按顺序遍历字典中的所有键

      可使用函数sorted() 来获得按特定顺序排列的键列表的副本
      6.3.4 遍历字典中的所有值

      如果你感兴趣的主要是字典包含的值,可使用方法values()

      为剔除重复项,可使用集(set)集合 类似于列表,但每个元素都必须是独一无二的:

    favorite_languages = {
        'jen': 'python',
        'sarah': 'c',
        'edward': 'ruby',
        'phil': 'python',
    }
    
    for k,v in favorite_languages.items():
        print("Key:"+k)
        print("Value:"+v)
    print(favorite_languages.keys())
    print(favorite_languages.values())
    print(sorted(favorite_languages.keys()))
    print(set(favorite_languages.values()))
    Key:jen
    Value:python
    Key:sarah
    Value:c
    Key:edward
    Value:ruby
    Key:phil
    Value:python
    dict_keys(['jen', 'sarah', 'edward', 'phil'])
    dict_values(['python', 'c', 'ruby', 'python'])
    ['edward', 'jen', 'phil', 'sarah']
    {'python', 'ruby', 'c'}
    

    6.4 嵌套

      6.4.1 字典列表

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

      6.4.2 在字典中存储列表

      需要将列表存储在字典中,而不是将字典存储在列表中

    favorite_languages = {
        'jen': ['python', 'ruby'],
        'sarah': ['c'],
        'edward': ['ruby', 'go'],
        'phil': ['python', 'haskell'],
        }
    for name, languages in favorite_languages.items():
        print("
    " + name.title() + "'s favorite languages are:")
        if len(languages) > 1:
            for language in languages:
                print("	" + language.title())
        else:
            print("	" + languages[0].title())
    Jen's favorite languages are:
    	Python
    	Ruby
    
    Sarah's favorite languages are:
    	C
    
    Edward's favorite languages are:
    	Ruby
    	Go
    
    Phil's favorite languages are:
    	Python
    	Haskell
    

      6.4.3 在字典中存储字典

      可在字典中嵌套字典,但这样做时,代码可能很快复杂起来。

    users = {
        'aeinstein': {
            '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())
    Username: aeinstein
    	Full name: Albert Einstein
    
    Username: mcurie
    	Full name: Marie Curie
  • 相关阅读:
    LeetCode 79. 单词搜索
    LeetCode 1143. 最长公共子序列
    LeetCode 55. 跳跃游戏
    LeetCode 48. 旋转图像
    LeetCode 93. 复原 IP 地址
    LeetCode 456. 132模式
    LeetCode 341. 扁平化嵌套列表迭代器
    LeetCode 73. 矩阵置零
    LeetCode 47. 全排列 II
    LeetCode 46. 全排列
  • 原文地址:https://www.cnblogs.com/changxinblog/p/9771876.html
Copyright © 2011-2022 走看看