【python百炼成魔】python之字典详解

2023-06-28 14:20:48

前言

今天我们一起来探讨python的另外一种类型: 字典,如果你没有看过列表和元组,建议先学习列表和元组。

【python百炼成魔】python之元组详解

【python百炼成魔】python之列表详解

在这里插入图片描述

字典的概念

我们在前面的章节中已经学习了列表与元组,这两种数据类型中的元素都是按照顺序排列的,所以可以使用索引进行取值。

本节要学习的知识点是字典,它不通过索引就能取到值,换句话说,字典是无顺序的数据结构。

字典可以被看成一种列表型的数据结构,是一种可以容纳其他类型数据的容器。

字典中的元素是使用“键-值”表示的,而且“键-值”成对出现,键与值之间存在的关系可以描述为通过键取值。
这是字典的核心概念,类似通过部首查字

图示:

在这里插入图片描述

语法格式及字典的创建

创建字典的方法:

  1. 使用花括号({})和键值对(key-value pairs):
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
  1. 使用内置的dict()函数:
my_dict = dict(key1='value1', key2='value2', key3='value3')
  1. 使用包含键值对的列表和列表解析:
key_value_pairs = [('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')]
my_dict = {key: value for key, value in key_value_pairs}

在这个代码片段中,key_value_pairs是一个包含键值对的列表,每个键值对由两个元素组成,分别是键和对应的值。

列表中的每个元素都代表一个键值对,例如 (‘key1’, ‘value1’)、(‘key2’, ‘value2’) 等。

my_dict = {key: value for key, value in key_value_pairs} 是使用列表解析创建字典的方式

在这个列表解析中,我们遍历 key_value_pairs 列表中的每个元素,将每个元素中的第一个元素作为键,第二个元素作为值,然后使用这些键值对创建一个新的字典 my_dict。

过程如下:

  • 在列表解析中,迭代 key_value_pairs 列表中的每个元素,每次迭代都将该元素解构为 key 和 value。
  • 在每次迭代中,将 key 作为键,value 作为对应的值,创建一个键值对,然后将该键值对添加到新的字典 my_dict 中。
  • 最终,my_dict 将包含原始列表中的所有键值对,以键为索引的字典对象就创建完成。
  1. 使用zip()函数结合两个列表来创建字典:
keys = ['key1', 'key2', 'key3']
values = ['value1', 'value2', 'value3']
my_dict = dict(zip(keys, values))

这些是创建字典的一些常见方式,您可以根据具体的需求选择使用最适合的方式来创建字典。无论哪种方式,都可以灵活地创建具有键值对的字典对象

重点看前两种方法就可以。

字典的日常操作

1. 获取字典的值

# 定义一个字典
my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'New York'}

# 获取字典中的值
name = my_dict['name']
age = my_dict['age']
city = my_dict['city']

# 打印获取到的值
print("Name:", name)
print("Age:", age)
print("City:", city)

当使用字典的键来获取值时,如果键不存在,会引发 KeyError 错误。

country = my_dict.get('country', 'Unknown')  # 键不存在时使用默认值

这样获取出来之后就变成了:
Country: Unknown

2. 获取字典视图的三个方法

字典提供了三个方法来获取字典的视图,它们分别是 keys()、values() 和 items()。这些方法返回的是字典视图对象,可以用于遍历字典的键、值和键值对。

  • key()
    该方法返回一个包含字典所有键的视图对象,可以通过遍历来获取每个键。
my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
keys_view = my_dict.keys()
for key in keys_view:
    print(key)
  • values()
    该方法返回一个包含字典所有值的视图对象,可以通过遍历来获取每个值
my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
values_view = my_dict.values()
for value in values_view:
    print(value)
  • items()
    该方法返回一个包含字典所有键值对的视图对象,可以通过遍历来获取每个键值对。
my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}
items_view = my_dict.items()
for key, value in items_view:
    print(key, value)

3. 增加元素,修改元素,删除元素

my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'qingdao'}

# 增加元素
my_dict['gender'] = 'male'
my_dict['country'] = 'China'

# 打印字典
print("字典增加元素后的内容:", my_dict)

# 修改元素
my_dict['age'] = 20
my_dict['city'] = 'Beijing'

# 打印字典
print("字典修改元素后的内容:", my_dict)

# 删除元素
del my_dict['country']

# 打印字典
print("字典删除元素后的内容:", my_dict)

执行结果:

字典增加元素后的内容: {'name': 'mufenggrow', 'age': 19, 'city': 'qingdao', 'gender': 'male', 'country': 'China'}
字典修改元素后的内容: {'name': 'mufenggrow', 'age': 20, 'city': 'Beijing', 'gender': 'male', 'country': 'China'}
字典删除元素后的内容: {'name': 'mufenggrow', 'age': 20, 'city': 'Beijing', 'gender': 'male'}

4. 字典的遍历

my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'qingdao'}

# 遍历键
print("遍历键:")
for key in my_dict:
    print(key)

# 遍历值
print("\n遍历值:")
for value in my_dict.values():
    print(value)

# 遍历键值对
print("\n遍历键值对:")
for key, value in my_dict.items():
    print(key, value)

执行结果:

遍历键:
name
age
city

遍历值:
mufenggrow
19
qingdao

遍历键值对:
name mufenggrow
age 19
city qingdao

本例中:

  • 使用 for key in my_dict 的方式遍历字典的键,并分别打印每个键。
  • 使用 for value in my_dict.values() 的方式遍历字典的值,并分别打印每个值。
  • 使用 for key, value in my_dict.items() 的方式遍历字典的键值对,并分别打印每个键和对应的值。

5. 字典的常用方法

常用的方法有:

  • formkeys()方法
  • get() 方法
  • setdefault() 方法
  • pop() 方法

以下是四个方法的代码示例,基于字典的增加、获取、设置和删除操作:

  • fromkeys() 方法:
keys = ['name', 'age', 'city', 'gender', 'country']
default_value = 'Unknown'

my_dict = dict.fromkeys(keys, default_value)

print(my_dict)

输出结果:

{'name': 'Unknown', 'age': 'Unknown', 'city': 'Unknown', 'gender': 'Unknown', 'country': 'Unknown'}

fromkeys() 方法用于创建一个新的字典,其中使用指定的键列表作为键,使用给定的默认值作为对应的值。
  • get() 方法:
my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'QD', 'gender': 'Male', 'country': 'China'}

age = my_dict.get('age')
occupation = my_dict.get('occupation', 'Unknown')

print("Age:", age)
print("Occupation:", occupation)

输出结果:

Age: 19
Occupation: Unknown

get() 方法用于根据给定的键获取字典中对应的值。如果键存在,则返回对应的值;如果键不存在,则返回指定的默认值(如果没有提供默认值,则返回 None)。

  • setdefault() 方法:
my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'QD'}

hobby = my_dict.setdefault('hobby', 'Unknown')
country = my_dict.setdefault('country', 'China')

print(my_dict)
print("Hobby:", hobby)
print("Country:", country)
  • 输出结果:
{'name': 'mufenggrow', 'age': 19, 'city': 'QD', 'hobby': 'Unknown', 'country': 'China'}
Hobby: Unknown
Country: China

setdefault() 方法用于获取字典中给定键的值,如果键存在,则返回对应的值;如果键不存在,则将键插入字典并设置指定的默认值。

  • pop() 方法:
my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'QD', 'hobby': 'Unknown', 'country': 'China'}

hobby = my_dict.pop('hobby')

print(my_dict)
print("Popped Hobby:", hobby)

输出结果:

{'name': 'mufenggrow', 'age': 19, 'city': 'QD', 'country': 'China'}
Popped Hobby: Unknown

pop() 方法用于删除并返回字典中给定键的值。

在使用pop()方法时,如果找到key,就会删除该键值对;如果找不到key,就会返回defalut设置的值;如果该值没有设置,就会报错。

my_dict = {'name': 'mufenggrow', 'age': 19, 'city': 'QD'}

# 删除键为 'age' 的键值对,并返回对应的值
age = my_dict.pop('age')
print("Popped Age:", age)
print("Updated Dictionary:", my_dict)

# 尝试删除不存在的键 'country',返回默认值 'Unknown'
country = my_dict.pop('country', 'Unknown')
print("Popped Country:", country)
print("Updated Dictionary:", my_dict)

# 尝试删除不存在的键 'country',没有提供默认值,会抛出 KeyError 异常
country = my_dict.pop('country')

使用 pop(‘country’, ‘Unknown’) 尝试删除键为 ‘country’ 的键值对,由于 ‘country’ 不存在,所以返回了给定的默认值 ‘Unknown’。

最后,使用 pop(‘country’) 尝试删除不存在的键 ‘country’,但由于没有提供默认值,默认情况下会抛出 KeyError 异常。

总结

我是沐风晓月,我在csdn等你

原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

更多推荐

前端JavaScript中MutationObserver:监测DOM变化的强大工具

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录引言1.MutationObserver简介2.MutationObserver的属性3.MutationObserver的应用场景3.1动态内容加载3.2表单验证3.响应式布局3.4自定义组件开发4.使用Mu

Python 人工智能编程指南:基础、库和工具大全解析

Python已成为人工智能(AI)和机器学习领域的通用语言。其广泛的应用、强大的库生态系统和用户友好的语法使其成为人工智能爱好者、数据科学家和研究人员的理想选择。在这份综合指南中,我们将探讨用于AI编程的Python基础知识,深入研究关键库,并重点介绍AI开发的基本工具。Python:人工智能的语言Python在人工智

按图搜索淘宝商品(拍立淘)API接口 搜爆款商品 图片搜索功能api 调用示例

接口名称:item_search_img公共参数请求地址:测试item_search_img名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,ite

【优测云服务平台】教你玩转小程序压测

上一篇小优分享了《【压力测试指南】没有任何文档,小白也可以做的压力测试》,但对应一些零售电商、直播类的应用,其关联的小程序有很高的使用频率,小程序的压测也必不可少。那么,今天我们继续聊聊:在没有任何文档的前提下,小程序的压力测试该怎么做?一、前言开始前,我们先来看看常见的小程序压测场景:要上线新系统/新功能,需要探知小

C++之互斥锁、读写锁、互斥量、 信号量、原子锁机制总结(二百二十五)

简介:CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀人生格言:人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.更多原创,欢迎关注:Android系统攻城狮1.前言本篇目的:C++之

Python——urllib库

urllib是一个用来处理网络请求的python内置库。一.基本使用二.一个类型和6个方法2.1一个类型urllib的request库中urlopen方法返回的类型:<class'http.client.HTTPResponse'>。为了与之后request库做区别。2.26个方法read()方法:获得响应正文,按字节

基于Java+vue前后端分离学习交流论坛设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌🍅文末获取源码联系🍅👇🏻精彩专栏推荐订阅👇🏻不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题

rv1126之isp黑电平(BLC)校准!

前言:大家好,今天我们继续来讲解isp第二期内容,这期内容主要分三个部分:1、tunning的工作流程2、利用RKISP2.x_Tuner来创建tunning工程,并连接上rv1126开发板进行抓图3、BLC(黑电平校准)的原理和校准方法以及实战那对于RKISP2.x_Tuner的工具使用,这个在第一期的内容里面有详细

从零开始在树莓派上搭建WordPress博客网站并实现公网访问

文章目录序幕概述1.安装PHP2.安装MySQL数据库3.安装Wordpress4.设置您的WordPress数据库设置MySQL/MariaDB创建WordPress数据库5.WordPressconfiguration6.将WordPress站点发布到公网安装相对URL插件修改config.php配置7.支持好友链

php程序设计的基本原则

单一职责原则(SRP):一个类应该只有一个原因引起变化,即一个类应该只负责一项职责。classUser{private$name;private$email;publicfunction__construct($name,$email){$this->name=$name;$this->email=$email;}pu

HTML5 游戏开发实战 | 俄罗斯方块

俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏看似简单但却变化无穷,游戏过程仅需要玩家将不断下落的各种形状的方块移动、翻转,如果某一行被方块充满了,那就将这一行消掉;而当窗口中无法再容纳下落的方块时,就宣告游戏结束。可见俄罗斯方块的需求如下。(

热文推荐