5.字典--《Python编程:从入门到实践》

5.1 字典

  在 Python 中,字典是一系列键—值对。键不能重复,否则对应的值是后面一个。

5.1.1 键-值队的添加与修改

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

   alien_0['x_position'] = 0     # 添加
   alien_0['points'] = 10        # 修改
   print(alien_0)

 5.1.2 键-值队的删除

   alien_0 = {'color': 'green', 'points': 5}
   print(alien_0)
   
   del alien_0['points']        # 键-值对的删除
   print(alien_0) 

 


 

5.2 遍历字典

5.2.1 遍历字典的键和值

  可以使用一个 for 循环来遍历这个字典,可声明两个变量,用于存储键—值对中的键和值。for语句的第二部分包含字典名和方法 items(),它返回一个键—值对列表。

  注意,即便遍历字典时,键—值对的返回顺序也与存储顺序不同。Python不关心键—值对的存
储顺序,而只跟踪键和值之间的关联关系。

   user_0 = {
       'username': 'efermi',
       'first': 'enrico',
       'last': 'fermi',
   }
   for key, value in user_0.items():
       print("\nKey: " + key)       # 键
       print("Value: " + value)     # 值

 

5.2.2 只遍历字典的键

  在不需要使用字典中的值时,方法 keys() 很有用。请注意,遍历字典时,会默认遍历所有的键,因此不使用 key() 而 for 循环依然是遍历字典的键

favorite_languages = {
       'jen': 'python',
       'sarah': 'c',
       'edward': 'ruby',
       'phil': 'python',
   }
   for name in favorite_languages.keys():       # 使用key方法返回键
       print(name.title())
    
   # 遍历字典时,会默认遍历所有的键
   for name in favorite_languages:       # 使用key方法返回键
      print(name.title())
    

 

 5.2.3 按顺序遍历字典中所有的键

   要以特定的顺序返回元素,一种办法是在 for 循环中对返回的键进行排序。为此,可使用函
sorted() 来获得按特定顺序排列的键列表的副本。

   favorite_languages = {
       'jen': 'python',
       'Sarah': 'c',
       'edward': 'ruby',
       'phil': 'python',
   }
   # 从大写到小写,从a-z顺序排序
   for name in sorted(favorite_languages.keys()):
       print(name + ", thank you for taking the poll.")

 

 5.2.4 遍历字典中所有的值

   要字典包含的值,可使用方法 values()。如下实例并没有考虑值的重复性,会打印重复值。

favorite_languages = {
       'jen': 'python',
       'sarah': 'c',
       'edward': 'ruby',
       'phil': 'python',
       print("The following languages have been mentioned:")
   }
   for language in favorite_languages.values():     # 遍历值
       print(language.title())        # 可能会有重复的值

  要剔除值的重复项,可以调用集合 set。 集合类似于列表,但每个元素都必须是独一无二的。

   favorite_languages = {
       'jen': 'python',
       'sarah': 'c',
       'edward': 'ruby',
       'phil': 'python',
   }
   print("The following languages have been mentioned:")
   for language in set(favorite_languages.values()):
       print(language.title())

 


 

 5.3 嵌套

   需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套

 5.3.1 在列表中存储字典

   alien_0 = {'color': 'green', 'points': 5}        # 定义了三个字典
   alien_1 = {'color': 'yellow', 'points': 10}
   alien_2 = {'color': 'red', 'points': 15}
   aliens = [alien_0, alien_1, alien_2]             # 存储在列表中
   for alien in aliens:
       print(alien)
       
   # {'color': 'green', 'points': 5}
   # {'color': 'yellow', 'points': 10}
   # {'color': 'red', 'points': 15}

 

 5.3.2 在字典中存储列表

   # 存储所点比萨的信息(字典)
   pizza = {
       'crust': 'thick',                            # 披萨类型
       'toppings': ['mushrooms', 'extra cheese'],   # 配备的酱料(列表)
   }
   # 概述所点的比萨
   print("You ordered a " + pizza['crust'] + "-crust pizza " +
           "with the following toppings:")
   for topping in pizza['toppings']:
       print("\t" + topping)

   # You ordered a thick - crust pizza with the following toppings:
   #     mushrooms
   #     extra cheese

 

 5.3.2 在字典中存储字典

  例如,如果有多个网站用户,每个都有独特的用户名,可在字典中将用户名作为键,然后将每位用户的信息存储在一个字典中,并将该字典作为与用户名相关联的值。

    键    值

  用户 -- 存储信息的字典

          键          值

        存储信息的字典   --  用户信息

   users = {
       # 用户名
       'aeinstein': {       
           # 用户信息
           'first': 'albert',
           'last': 'einstein',
           'location': 'princeton',
       },
       'mcurie': {
           'first': 'marie',
           'last': 'curie',
           'location': 'paris',
       },
   }
   for username, user_info in users.items():
       print("\nUsername: " + username)
       full_name = user_info['first'] + " " + user_info['last']
       location = user_info['location']

       print("\tFull name: " + full_name.title())
       print("\tLocation: " + location.title())

   # Username: aeinstein
   # Fullname: Albert
   # Einstein
   # Location: Princeton
   
   # Username: mcurie
   # Fullname: Marie
   # Curie
   # Location: Paris

  

  

 

 

 

 

 

 

 

 

  

posted @ 2022-07-22 09:36  人类观察者  阅读(44)  评论(0编辑  收藏  举报