《Python编程从入门到实践 第二版》第六章 字典 学习笔记


前言

《Python编程从入门到实践 第二版》

第六章 字典

学习笔记

第六章 字典

一、一个简单的字典

  • 1)字典是一系列键值对,每个键都与一个值相关联,可使用键来访问相关联的值,与键相关联的值可以是数、字符串、列表乃至字典,事实上,可将任何 Python 对象用作字典中的值。
  • 2)键值对是两个相关联的值,键和值之间用冒号分隔,而键值对之间用逗号分隔。
zidian = {
    
    'asd': 132,'wer':'sdsd' }
print(zidian['asd'])
print(zidian['wer'])
print('\n')

二、使用字典

1.访问字典中的值

  • 1) 要获取与键相关联的值,可依次指定字典名和放在方括号内的键。
  • 2) 字典中可以包含任意数量的键值对。
zidian = {
    
    'asd': 132,'wer':'sdsd' }
print(zidian['asd'])
print(zidian['wer'])
print('\n')

在这里插入图片描述

2.添加键值对

  • 1) 字典是一种动态的结构,可随时在其中添加键值对,要添加键值对,可依次指定字典名、用方括号括起来的键和相关联的值。
  • 2)注意事项:在 Python3.7 中,字典中元素的排列顺序与定义时相同,如果字典打印出来或遍历其元素,将发现元素,将发现元素的排列顺序与添加顺序相同。
print(zidian)
zidian['qwe'] = 'uio'
zidian['vbn'] = 789
print(zidian)
print('\n')

在这里插入图片描述

3.创建一个空字典

  • 1) 创建空字典:先使用一对空花括号定义一个字典,再分行添加各键值对。
  • 2) 使用字典来存储用户提供的数据或在编写能自动生成大量键值对的代码时,通常需要先定义一个空字典。
zidian1 = {
    
    }
zidian1['color'] = 'green'
zidian1['size'] = 123
print(zidian1)
print('\n')

在这里插入图片描述

4.修改字典中的值

  • 1) 修改字典中的值,可依次指定字典名、用方括号括起来的键,以及与该键值相关联的新值。
zidian1['color'] = 'blue'
zidian1['size'] = 456
print(zidian1)
print('\n')

在这里插入图片描述

5.删除键值对

  • 1) 对字典中不再需要的信息,可使用 del 语句将相应的键值对彻底删除;使用 del 语句,必须指定字典名和要删除的键。
  • 2) 使用 del 语句,删除的键值对会永远消失。
print(zidian1)
del zidian1['size']
print(zidian1)
print('\n')

在这里插入图片描述

6.由类似对象组成的字典

  • 1) 字典存储的是一个对象的多种信息,但也可以使用字典来存储众多对象的同一种信息。
  • 2) 编程格式规范:确定需要使用多行来定义字典时,要在输入左花括号后按回车键在下一行缩进四个空格,指定第一个键值对,并在它后边加上一个逗号,此后再按回车键时,本编译器将自动缩进后续键值对,且缩进量与第一个键值对相同。
  • 3) 定义好字典后,在最后一个键值对的下一行添加一个右花括号,并缩进四个空格,使其与字典中的键对齐,一种不错的做法是,在最后一个键值对后面也加上逗号,为以后在下一行添加键值对做准备。
favorite_cars = {
    
    
    'zxc' : 'audi',
    'xcv' : 'bmw',
    'cvb' : 'bnez',
    'vbn' : 'byd',
}
favorite_car = favorite_cars['cvb']
print(f"cvb最喜欢的车品牌是{
      
      favorite_car}\n")

在这里插入图片描述

7.使用方法 get()来访问值

  • 1) 如果字典中指定的键不存在时,使用放在方括号内的键从字典中获取感兴趣的值时,可能会引发问题。但使用方法 get()在指定的键不存在时返回一个默认值,从而避免这样的错误。
  • 2) 方法 get()的第一个参数用于指定键,时必不可少的;第二个参数为指定的键不存在时要返回的值,是可选的。
  • 3) 如果指定的键有可能不存在,应考虑使用方法 get(),而不要使用方括号表示法。
  • 4) 调用 get()时,如果没有指定第二个参数且指定的键不存在,Python 将返回 None,这个特殊值表示没有相应的值,None 并非错误,而是一个表示所需值不存在的特殊值。
favorite_cars = {
    
    
    'zxc' : 'audi',
    'xcv' : 'bmw',
    'cvb' : 'bnez',
    'vbn' : 'byd',
}
car = favorite_cars['vbn'].upper()
print(f"vbn 最喜欢的汽车品牌是{
      
      car}")
car1 = favorite_cars.get('xsww','没有这个人!')
car2 = favorite_cars.get('fre')
print(car1)
print(car2)
print('\n')

在这里插入图片描述

三、遍历字典

Note:Python 支持对字典进行遍历,字典可用于以各种方式存储信息,因此有多种遍历方式:可遍历字典的所有键值对,也可仅遍历键或值。

1. 遍历所有键值对—方法 items()

  • 1) 字典名.items():返回一个键值对列表。
  • 2) 字典存储的是不同人的同一种信息,对于类似于这样的字典,遍历所有的键值对很合适。
favorite_cars = {
    
    
    'zxc' : 'audi',
    'xcv' : 'bmw',
    'cvb' : 'bnez',
    'vbn' : 'byd',
    'hjk' : 'audi'
}
for key,value in favorite_cars.items():
    print(f"\nkey:{
      
      key}")
    print(f"value:{
      
      value}")
print('\n')

在这里插入图片描述

2.遍历字典中的所有键—方法 keys()

  • 1) 遍历字典时会默认遍历所有的键。
  • 2) 方法 keys()还可确定某人是否接受了调查。
  • 3) 方法 keys():它返回一个列表,其中包含字典中的所有键。
for name in favorite_cars.keys():
    print(name.upper())
print('\n')
for name in sorted(favorite_cars.keys()):
    print(name.lower())
print('\n')

在这里插入图片描述

3.按特定顺序遍历字典中的所有键

  • 1) 从 Python3.7 起,遍历字典时将按插入的顺序返回其中的元素。
  • 2) 要以特定顺序返回元素,一种方法是在 for 循环中对返回的键进行排序,为此,可使用函数 sorted()来获得按特定顺序排列的键列表的副本。
for name in favorite_cars.keys():
    print(name.upper())
print('\n')
for name in sorted(favorite_cars.keys()):
    print(name.lower())
print('\n')

在这里插入图片描述

4.遍历字典中的所有值—方法 values()

  • 1) 方法 values():返回一个值列表,不包含任何键。但这种做法提取字典中所有的值,没有考虑是否重复。
  • 2) 如果被调查者很多,最终的列表可能包含大量重复项,未剔除重复项,可使用集合(set),集合中的每个元素必须是独一无二的。通过对包含重复元素的列表调用set(),可让 Python 找出列表中独一无二的元素,并使用这些元素来创建一个集合。
  • 3) 集合:可使用一对花括号直接创建集合,并在其中用逗号分隔元素。
  • 4) 集合和字典很容易混淆,因为它们都用一对花括号定义,当花括号内没有键值对时,定义的很可能是集合。不同于字典和列表,集合不会以特定的顺序存储元素。
favorite_cars = {
    
    
    'zxc' : 'audi',
    'xcv' : 'bmw',
    'cvb' : 'bnez',
    'vbn' : 'byd',
    'hjk' : 'audi'
}
for car in favorite_cars.values():
    print(car.upper())
print('\n')
for car in set(favorite_cars.values()):
    print(car.lower())
print('\n')

在这里插入图片描述

四、嵌套

嵌套的三种情况:在列表中嵌套字典、在字典中嵌套列表、在字典中嵌套字典。

1.字典列表

  • 1) 函数 range():返回一系列数,放在 for 循环中,其唯一用途是告诉 Python 要重复这个循环多少次。
#在列表中嵌套字典
picture_1 = {
    
    'color':'green','size':123}
picture_2 = {
    
    'color':'red','size':456}
picture_3 = {
    
    'color':'blue','size':789}
pictures = [picture_1,picture_2,picture_3]
print(pictures)
print('\n')

在这里插入图片描述

2.在字典中存储列表

  • 1) 编程规范:如果函数调用 print()中的字符串很长,可以在合适位置分行。只需要在每行末尾都加上引号,同时对于除第一行以外的其他各行,都在行首加上引号并缩进。这样 Python 将自动合并圆括号内的所有字符串。
  • 2) 列表和字典的嵌套层级不应太多。
#在字典中嵌套列表
favorite_cars ={
    
    
    'qwe':['audi','bmw','byd'],
    'asd':['audi','benz','toyota','tesla'],
    'zxc':['bnez','tesla','byd'],
    'cvb':['tesla','byd','bmw'],
}
for name,cars in favorite_cars.items():
    print(f"\n{
      
      name.upper()} 最喜欢的汽车品牌是:")
    for car in cars:
        print(f"\t{
      
      car.lower()}")
print("\n")

在这里插入图片描述

3.在字典中存储字典

#在字典中存储字典
users = {
    
    
    'qwert':{
    
    
        'first':'zzzzz',
        'last':'xxxxx',
        'number':123123,
    },
    'asdfg':{
    
    
        'first':'ccccc',
        'last':'vvvvv',
        'number':456456,
    },
    'zxcvb':{
    
    
        'first':'bbbbb',
        'last':'nnnnn',
        'number':789798,
    },
}
for user_name,user_number in users.items():
    print(f"\nusername:{
      
      user_name.upper()}")
    full_name = f"{
      
      user_number['first']}{
      
      user_number['last']}"
    full_number = f"{
      
      user_number['number']}"
    print(full_name.upper())
    print(full_number.lower())
print('\n')

在这里插入图片描述

总结

本次内容为第六章 字典 的学习笔记,主要内容包一个简单的字典,使用字典,遍历字典,嵌套等四个方面。