《Python零基础快乐学习之旅》学习笔记9——字典(dict)

╰+攻爆jí腚メ 2022-10-25 01:28 315阅读 0赞

文章目录

  • 第9章 字典(dict)
    • 9.1 字典基本操作
      • 9.1.1 定义字典
      • 9.1.2 列出字典元素的值
      • 9.1.3 增加字典元素
      • 9.1.4 更改字典元素内容
      • 9.1.5 删除字典特定元素
      • 9.1.6 删除字典所有元素
      • 9.1.7 删除字典
      • 9.1.8 创建空字典
      • 9.1.9 字典的复制
      • 9.1.10 取得字典元素数量
      • 9.1.11 验证元素是否存在
    • 9.2 遍历字典
      • 9.2.1 遍历字典的键-值
      • 9.2.2 遍历字典的键
      • 9.2.3 按键排序与遍历字典
      • 9.2.4 遍历字典的值
      • 9.2.5 按值排序与遍历字典的值
    • 9.3 字典内键的值为列表
    • 9.4 while循环在字典的应用
    • 9.5 字典常用的函数和方法
      • 9.5.1 len()
      • 9.5.2 get()

第9章 字典(dict)

列表与元组是依序排列,可称为序列数据结构,只要知道元素的特定位置,即可根据索引取得元素内容。而字典不同,它并不是依序排列的数据结构,通常可称为非序列数据结构,无法使用类似列表的索引值[n]的概念取得元素内容。

9.1 字典基本操作

9.1.1 定义字典

字典是一个非序列的数据结构,但是它的元素是用键值对的方式存储的,在操作时是用(key)获取(value)的内容。定义字典时,将“键:值”放在大括号“{}”内,字典的语法格式如下:

  1. name_dict = { 1:值1, 2:值2, ..., n:值n, } # name_dict为字典变量名称

字典的键常用的是字符串数字,在一个字典中不可以有重复的键出现。字典的值可以是Python的任意数据对象,可以是数值字符串列表等。最右边的“,”可有可无。

程序实例:

  1. heroes = { '疾风剑豪':6300, '盲僧':4800, '沙漠死神':3150, '熔岩巨兽':1350, '圣锤之毅':450} # 定义字典heroes
  2. print(heroes) # 打印字典内容
  3. print("字典heroes的数据类型为:", type(heroes))

执行结果:

  1. {'疾风剑豪': 6300, '盲僧': 4800, '沙漠死神': 3150, '熔岩巨兽': 1350, '圣锤之毅': 450}
  2. 字典heroes的数据类型为: <class 'dict'>

9.1.2 列出字典元素的值

字典的元素是以“键:值”配对设置,要取得元素的值,可以将键作为索引,使用字典变量名称[‘键’]的方式获取。

程序实例:

  1. heroes = { '疾风剑豪':6300, '盲僧':4800, '沙漠死神':3150, '熔岩巨兽':1350, '圣锤之毅':450} # 定义字典heroes
  2. print("盲僧的价格为:", heroes['盲僧'], "蓝色精粹")

执行结果:

  1. 盲僧的价格为: 4800 蓝色精粹

当字典的键为整数时,可使用字典变量名称[键]的方式获取。

程序实例:

  1. fruits = { 0:'apple', 1:'banana', 2:'orange'}
  2. print(fruits[0], fruits[1], fruits[2])

执行结果:

  1. apple banana orange

9.1.3 增加字典元素

可使用下列语法格式添加字典元素:

  1. name_dict[键] = # name_dict是字典变量

程序实例:

  1. fruits = { 0:'apple', 1:'banana', 2:'orange'}
  2. print(fruits)
  3. fruits['new_fruit'] = 'watermelon'
  4. print("新的fruits字典:",fruits)

执行结果:

  1. { 0: 'apple', 1: 'banana', 2: 'orange'}
  2. 新的fruits字典: { 0: 'apple', 1: 'banana', 2: 'orange', 'new_fruit': 'watermelon'}

9.1.4 更改字典元素内容

程序实例:

  1. fruits = { '西瓜':15, '苹果':20, '香蕉':18, '橙子':24}
  2. print("苹果涨价前,一斤",fruits['苹果'], "元")
  3. fruits['苹果'] = 25
  4. print("苹果涨价后,一斤",fruits['苹果'], "元")

执行结果:

  1. 苹果涨价前,一斤 20
  2. 苹果涨价后,一斤 25

9.1.5 删除字典特定元素

删除字典的特定元素,语法格式如下:

  1. del name_dict[键]

程序实例:

  1. shopping_cart = { 'iPhone Plus':3800, 'Mac book':5300, 'Kindle电子书阅读器':688, '蓝牙耳机':150}
  2. print("旧的购物车清单:", shopping_cart)
  3. del shopping_cart['Kindle电子书阅读器']
  4. print("新的购物车清单:", shopping_cart)

执行结果:

  1. 旧的购物车清单: { 'iPhone Plus': 3800, 'Mac book': 5300, 'Kindle电子书阅读器': 688, '蓝牙耳机': 150}
  2. 新的购物车清单: { 'iPhone Plus': 3800, 'Mac book': 5300, '蓝牙耳机': 150}

9.1.6 删除字典所有元素

使用 clear() 方法可将字典中的所有元素删除,将字典变成空字典。

程序实例:

  1. shopping_cart = { 'iPhone Plus':3800, 'Mac book':5300, 'Kindle电子书阅读器':688, '蓝牙耳机':150}
  2. print("旧的购物车清单:", shopping_cart)
  3. shopping_cart.clear()
  4. print("新的购物车清单:", shopping_cart)

执行结果:

  1. 旧的购物车清单: { 'iPhone Plus': 3800, 'Mac book': 5300, 'Kindle电子书阅读器': 688, '蓝牙耳机': 150}
  2. 新的购物车清单: { }

9.1.7 删除字典

使用del指令,可将整个字典删除,字典一经删除就不再存在。它的语法格式如下:

  1. del name_dict # 删除字典name_dict

程序实例:

  1. shopping_cart = { 'iPhone Plus':3800, 'Mac book':5300, 'Kindle电子书阅读器':688, '蓝牙耳机':150}
  2. print("旧的购物车清单:", shopping_cart)
  3. del shopping_cart
  4. print("新的购物车清单:", shopping_cart)

执行结果:
在这里插入图片描述

9.1.8 创建空字典

创建空字典的语法如下:

  1. name_dict = { }

程序实例:

  1. season = { } # 创建空字典
  2. print("空季节字典",season)
  3. season['Spring'] = '春天'
  4. season['Summer'] = '夏天'
  5. print("新季节字典", season)

执行结果:

  1. 空季节字典 { }
  2. 新季节字典 { 'Spring': '春天', 'Summer': '夏天'}

9.1.9 字典的复制

为保护原先字典内容,通常需要将字典复制,此时需要用到 copy() 方法。复制得到的新字典拥有独立的地址。

  1. new_dict = name_dict.copy # name_dict会被复制到new_dict

程序实例:

  1. fruits = { 0:'apple', 1:'banana', 2:'orange', 3:'pear'}
  2. cfruits = fruits.copy() # 将fruits字典复制到cfruits
  3. # 列出地址及字典元素内容
  4. # id()函数可以列出字典所在计算机内存的地址
  5. print("地址:", id(fruits), "字典元素:", fruits)
  6. print("地址:", id(cfruits), "字典元素:", cfruits)

执行结果:

  1. 地址: 1322840295808 字典元素: { 0: 'apple', 1: 'banana', 2: 'orange', 3: 'pear'}
  2. 地址: 1322840687360 字典元素: { 0: 'apple', 1: 'banana', 2: 'orange', 3: 'pear'}

9.1.10 取得字典元素数量

使用 len() 函数可得到字典元素数量,它的语法如下:

  1. length = len(name_list) # 将name_lsit字典的元素数量返回给length

程序实例:

  1. fruits = { '西瓜':15, '香蕉':20, '苹果':18, '橘子':13}
  2. noodles = { '牛肉面':20, '刀削面':30, '阳春面':25}
  3. empty_dict = { }
  4. print("fruits字典元素数量:%d" % len(fruits))
  5. print("noodles字典元素数量:%d" % len(noodles))
  6. print("empty_dict字典元素数量:%d" % len(empty_dict))

执行结果:

  1. fruits字典元素数量:4
  2. noodles字典元素数量:3
  3. empty_dict字典元素数量:0

9.1.11 验证元素是否存在

可用下列语法验证元素是否存在。

  1. in name_dict # 可验证键元素是否存在

程序实例:

  1. fruits = { '苹果':30, '西瓜':18, '香蕉':15, '橘子':20}
  2. key = input("请输入键(key):")
  3. value = input("请输入值(value):")
  4. if key in fruits:
  5. print("%s已在字典中" % key)
  6. else:
  7. fruits[key] = value
  8. print("新的fruits字典内容:", fruits)

执行结果:

在这里插入图片描述

9.2 遍历字典

9.2.1 遍历字典的键-值

Python提供 items() 方法,可以取得字典“键:值”配对的元素。通常搭配for循环使用。

  1. for key,value in name_dict.items()

程序实例:

  1. students = { '张三':18, '李四':20, '王五':19, '赵六':17}
  2. for name, age in students.items():
  3. print("姓名:%s,年龄:%d\n" % (name, age))

执行结果:
在这里插入图片描述

由于字典是一个无序的数据结构,Python只会保持“键:值”,而不会关注元素的排列顺序。

9.2.2 遍历字典的键

使用 keys() 方法可以获取字典的内容。

程序实例:

  1. students = { '张三':18, '李四':20, '王五':19, '赵六':17}
  2. for name in students.keys():
  3. print("姓名:", name)
  4. # 省略keys()方法可得到同样的结果
  5. for name in students:
  6. print("姓名:", name)

执行结果:

  1. 姓名: 张三
  2. 姓名: 李四
  3. 姓名: 王五
  4. 姓名: 赵六
  5. 姓名: 张三
  6. 姓名: 李四
  7. 姓名: 王五
  8. 姓名: 赵六

9.2.3 按键排序与遍历字典

Python的字典功能并不会处理排序,若想要遍历字典的同时列出排序结果,可以使用sorted() 方法。

程序实例:

  1. fruits = { 'banana':18, 'apple':25, 'orange':28, 'cherry':35, 'pear':24}
  2. print("按水果英文首字母正向排序:")
  3. for name in sorted(fruits.keys()):
  4. print(name)
  5. print("按水果英文首字母反向排序:")
  6. for name in sorted(fruits.keys(), reverse=True):
  7. print(name)

执行结果:

  1. 按水果英文首字母正向排序:
  2. apple
  3. banana
  4. cherry
  5. orange
  6. pear
  7. 按水果英文首字母反向排序:
  8. pear
  9. orange
  10. cherry
  11. banana
  12. apple

9.2.4 遍历字典的值

使用values() 方法,可以取得字典值列表。

程序实例:

  1. fruits = { 'banana':18, 'apple':25, 'orange':28, 'cherry':35, 'pear':24}
  2. for price in fruits.values():
  3. print(price)

执行结果:

  1. 18
  2. 25
  3. 28
  4. 35
  5. 24

9.2.5 按值排序与遍历字典的值

若有一个名为oldDict的字典需要按照字典的值排序,可使用下列的函数方法,返回新的排序结果列表:

  1. newList = sorted(oldDict.items(), key=lambda item:item[1])

得到的新列表newList的元素是元组,元组内有两个元素,分别是原字典的

程序实例:

  1. fruits = { 'banana':18, 'apple':25, 'orange':28, 'cherry':35, 'pear':24}
  2. print(fruits)
  3. print(max(fruits.values())) # 字典值中的最大值
  4. print(min(fruits.values())) # 字典值中的最小值
  5. fruitsList = sorted(fruits.items(), key=lambda item:item[1])
  6. print(fruitsList)

执行结果:

  1. { 'banana': 18, 'apple': 25, 'orange': 28, 'cherry': 35, 'pear': 24}
  2. 35
  3. 18
  4. [('banana', 18), ('pear', 24), ('apple', 25), ('orange', 28), ('cherry', 35)]

9.3 字典内键的值为列表

字典内键的值为列表时,遍历时需要使用巢状循环和字典的items()方法,其中外层循环取得字典的键,内层循环则是将列表的值拆解。

程序实例:

  1. dict = { 'fruits':['apple', 'orange', 'banana'],
  2. 'sports':['table tennis', 'football', 'basketball'],
  3. 'numbers':[110, 119, 666, 888]}
  4. for dict_key, dict_values in dict.items():
  5. print("%s对应的值为:" % dict_key)
  6. # 打印键值
  7. for value in dict_values:
  8. print(" ",value)

执行结果:

  1. fruits对应的值为:
  2. apple
  3. orange
  4. banana
  5. sports对应的值为:
  6. table tennis
  7. football
  8. basketball
  9. numbers对应的值为:
  10. 110
  11. 119
  12. 666
  13. 888

9.4 while循环在字典的应用

程序实例:

  1. menu = { } # 创建空字典
  2. add_menu = True
  3. while add_menu:
  4. staple_food = input("添加主食:")
  5. price = input("价格:")
  6. # 将输入存入menu字典
  7. menu[staple_food] = price
  8. repeat = input("是否继续添加菜单内容?(y/n)")
  9. if repeat != 'y': # 输入的不是y,则离开while循环
  10. add_menu = False
  11. print("目前菜单内容:")
  12. for staple_food, price in menu.items():
  13. print(staple_food,"价格:", price)

执行结果:
在这里插入图片描述

9.5 字典常用的函数和方法

9.5.1 len()

len()函数可以获得字典元素的个数。

程序实例:

  1. city = { 0:'北京', 1:'上海', 2:'南京', 3:'广州', 4:'深圳'}
  2. print(city,"元素个数:",len(city))

执行结果:

  1. { 0: '北京', 1: '上海', 2: '南京', 3: '广州', 4: '深圳'} 元素个数: 5

9.5.2 get()

使用get() 方法可以搜寻字典的键,如果键存在,则返回该键的值,否则返回默认值。其语法格式如下:

  1. ret_value = dict.get(key[,default=none]) # dict为要搜寻的字典

key为要搜寻的键,若找不到key则返回default的值(默认为None)。

程序实例:

  1. fruits = { 'apple':18, 'banana':13, 'orange':20}
  2. ret_value1 = fruits.get('peach')
  3. print("Value = ",ret_value1)
  4. ret_value2 = fruits.get('apple')
  5. print("Value = ",ret_value2)
  6. ret_value3 = fruits.get('pear', 15)
  7. print("Value = ",ret_value3)

执行结果:

  1. Value = None
  2. Value = 18
  3. Value = 15

记录”将进酒“中不同字出现的次数:

程序实例:

  1. poem = """君不见,黄河之水天上来,奔流到海不复回。君不见,高堂明镜悲白发,朝如青丝暮成雪!人生得意须尽欢,莫使金樽空对月。天生我材必有用,千金散尽还复来。烹羊宰牛且为乐,会须一饮三百杯。岑夫子,丹丘生,将进酒,杯莫停。与君歌一曲,请君为我倾耳听。钟鼓馔玉不足贵,但愿长醉不复醒。古来圣贤皆寂寞,惟有饮者留其名。陈王昔时宴平乐,斗酒十千恣欢谑。主人何为言少钱,径须沽取对君酌。五花马、千金裘,呼儿将出换美酒,与尔同销万古愁!"""
  2. mydict = { } # 创建空字典
  3. # 将标点符号用空字符串取代
  4. for ch in poem:
  5. if ch in ",。!、":
  6. poem = poem.replace(ch, '')
  7. print("去掉标点符号后的诗:")
  8. print(poem)
  9. # 将字符串转成列表
  10. poem_list = list(poem)
  11. print("\n将进酒内容列表:")
  12. print(poem_list)
  13. # 将列表处理成字典
  14. for word in poem_list:
  15. if word in mydict: # 检查该字是否已在字典中
  16. mydict[word] += 1 # 若存在,其值加1
  17. else:
  18. mydict[word] = 1 # 不存在则建立键与值
  19. print("\n执行结果:")
  20. print(mydict)

执行结果:
在这里插入图片描述


往期文章:

  • 《Python零基础快乐学习之旅》学习笔记2——认识变量与基本数学运算
  • 《Python零基础快乐学习之旅》学习笔记3——Python的基本数据类型
  • 《Python零基础快乐学习之旅》学习笔记4——基本输入与输出
  • 《Python零基础快乐学习之旅》学习笔记5——程序的流程控制使用if语句
  • 《Python零基础快乐学习之旅》学习笔记6——列表(list)
  • 《Python零基础快乐学习之旅》学习笔记7——循环设计
  • 《Python零基础快乐学习之旅》学习笔记8——元组(tuple)

发表评论

表情:
评论列表 (有 0 条评论,315人围观)

还没有评论,来说两句吧...

相关阅读