900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 《Python零基础快乐学习之旅》学习笔记9——字典(dict)

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

时间:2024-07-21 07:43:48

相关推荐

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

文章目录

第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)的内容。定义字典时,将“键:值”放在大括号“{}”内,字典的语法格式如下:

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

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

程序实例:

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

执行结果:

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

9.1.2 列出字典元素的值

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

程序实例:

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

执行结果:

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

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

程序实例:

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

执行结果:

apple banana orange

9.1.3 增加字典元素

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

name_dict[键] = 值# name_dict是字典变量

程序实例:

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

执行结果:

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

9.1.4 更改字典元素内容

程序实例:

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

执行结果:

苹果涨价前,一斤 20 元苹果涨价后,一斤 25 元

9.1.5 删除字典特定元素

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

del name_dict[键]

程序实例:

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

执行结果:

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

9.1.6 删除字典所有元素

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

程序实例:

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

执行结果:

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

9.1.7 删除字典

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

del name_dict # 删除字典name_dict

程序实例:

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

执行结果:

9.1.8 创建空字典

创建空字典的语法如下:

name_dict = {}

程序实例:

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

执行结果:

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

9.1.9 字典的复制

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

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

程序实例:

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

执行结果:

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

9.1.10 取得字典元素数量

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

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

程序实例:

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

执行结果:

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

9.1.11 验证元素是否存在

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

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

程序实例:

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

执行结果:

9.2 遍历字典

9.2.1 遍历字典的键-值

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

for key,value in name_dict.items()

程序实例:

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

执行结果:

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

9.2.2 遍历字典的键

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

程序实例:

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

执行结果:

姓名: 张三姓名: 李四姓名: 王五姓名: 赵六姓名: 张三姓名: 李四姓名: 王五姓名: 赵六

9.2.3 按键排序与遍历字典

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

程序实例:

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

执行结果:

按水果英文首字母正向排序:applebananacherryorangepear按水果英文首字母反向排序:pearorangecherrybananaapple

9.2.4 遍历字典的值

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

程序实例:

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

执行结果:

1825283524

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

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

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

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

程序实例:

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

执行结果:

{'banana': 18, 'apple': 25, 'orange': 28, 'cherry': 35, 'pear': 24}3518[('banana', 18), ('pear', 24), ('apple', 25), ('orange', 28), ('cherry', 35)]

9.3 字典内键的值为列表

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

程序实例:

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

执行结果:

fruits对应的值为:appleorangebananasports对应的值为:table tennisfootballbasketballnumbers对应的值为:110119666888

9.4 while循环在字典的应用

程序实例:

menu = {} # 创建空字典add_menu = Truewhile add_menu:staple_food = input("添加主食:")price = input("价格:")# 将输入存入menu字典menu[staple_food] = pricerepeat = input("是否继续添加菜单内容?(y/n)")if repeat != 'y': # 输入的不是y,则离开while循环add_menu = Falseprint("目前菜单内容:")for staple_food, price in menu.items():print(staple_food,"价格:", price)

执行结果:

9.5 字典常用的函数和方法

9.5.1 len()

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

程序实例:

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

执行结果:

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

9.5.2 get()

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

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

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

程序实例:

fruits = {'apple':18, 'banana':13, 'orange':20}ret_value1 = fruits.get('peach')print("Value = ",ret_value1)ret_value2 = fruits.get('apple')print("Value = ",ret_value2)ret_value3 = fruits.get('pear', 15)print("Value = ",ret_value3)

执行结果:

Value = NoneValue = 18Value = 15

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

程序实例:

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

执行结果:

往期文章:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。