Python字典类型key找value或者value找key方法汇总

字典中,如何通过唯一的value获取key

如果传入的值在字典的值中不存在,可以返回一个特定的默认值或者抛出一个异常来表示该情况。以下是两种处理方式的示例:

  1. 返回默认值:
def get_key_by_value(dictionary, value, default=None):for key, val in dictionary.items():if val == value:return keyreturn default# 示例字典
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2}# 获取值为4的键,默认返回None
result = get_key_by_value(my_dict, 4)
print(result)# 获取值为4的键,指定默认返回值为'Not Found'
result = get_key_by_value(my_dict, 4, default='Not Found')
print(result)

在上述示例中,我们在 get_key_by_value() 函数中添加了一个额外的参数 default,用于指定默认返回值。在循环遍历字典时,如果没有找到匹配的值,则会返回这个默认值。

运行代码,输出结果如下:

None
Not Found

可以看到,当传入值为 4 时,由于字典中没有对应的键,所以返回了设定的默认值。

  1. 抛出异常:
def get_key_by_value(dictionary, value):for key, val in dictionary.items():if val == value:return keyraise ValueError("Value not found in dictionary")# 示例字典
my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 2}# 获取值为4的键,抛出异常
result = get_key_by_value(my_dict, 4)
print(result)

在上述示例中,如果没有找到匹配的值,我们使用 raise 语句抛出了一个 ValueError 异常,并提供了相应的错误消息。

运行代码,会得到以下异常输出:

ValueError: Value not found in dictionary

可以看到,当传入值为 4 时,由于字典中没有对应的键,所以抛出了指定的异常。

2.通过key找value

以下是这四种Python字典查询键值对的方法:

  1. 使用键查找单个值

使用字典的键(key)可以直接查找对应的值。

my_dict = {'a': 1, 'b': 2, 'c': 3}
value_a = my_dict['a']
print(value_a)  # 输出: 1

在上述示例中,我们通过键 'a' 直接查找了字典 my_dict 中对应的值 1

如果键不存在,则会引发 KeyError 异常。因此,在使用该方法查找值之前,最好先使用 in 关键字检查字典中是否存在该键。

  1. 使用get()方法查找键对应的值

使用 get() 方法可以查找字典中指定键对应的值,如果键不存在,则返回 None 或指定的默认值。

my_dict = {'a': 1, 'b': 2, 'c': 3}
value_a = my_dict.get('a')
print(value_a)  # 输出: 1value_d = my_dict.get('d')  # 返回 None
value_d = my_dict.get('d', 0)  # 返回默认值 0

在上述示例中,我们使用 get() 方法查找了字典中键 'a' 和键 'd' 对应的值,并设置了默认值。

  1. 使用setdefault()查找

使用 setdefault() 方法可以查找字典中指定键对应的值,如果键不存在,则添加该键及其对应的值。如果键已存在,则返回其对应的值。

my_dict = {'a': 1, 'b': 2, 'c': 3}
value_a = my_dict.setdefault('a', 0)
value_d = my_dict.setdefault('d', 4)
print(value_a)  # 输出: 1
print(value_d)  # 输出: 4# 字典被更新
print(my_dict)  # 输出: {'a': 1, 'b': 2, 'c': 3, 'd': 4}

在上述示例中,我们使用 setdefault() 方法查找了字典中键 'a' 和键 'd' 对应的值,并添加了键 'd' 及其对应的值。由于键 'a' 已存在,因此不会添加该键,而是直接返回其对应的值。

注意:如果未指定默认值,则默认为 None

  1. 查询所有键和值以及键值对

可以使用 keys()values()items() 方法查询字典中所有的键、所有的值以及所有的键值对。

my_dict = {'a': 1, 'b': 2, 'c': 3}
keys = my_dict.keys()
values = my_dict.values()
items = my_dict.items()print(list(keys))   # 输出: ['a', 'b', 'c']
print(list(values))   # 输出: [1, 2, 3]
print(list(items))   # 输出: [('a', 1), ('b', 2), ('c', 3)]

在上述示例中,我们使用了 keys()values()items() 方法来查询字典中的所有键、所有值和所有键值对,并将它们转换为了列表形式。注意:items() 方法返回的是一个由元组构成的视图对象,可以通过转换为列表来查看其中的元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/586346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript:函数隐含对象arguments/剩余参数. . .c/解构赋值

除了this,在函数内部还存在着一个隐含的参数arguments arguments 是一个类数组对象(伪数组) 调用函数时传递的所有实参,都被存储在arguments中 arguments[0] 表示的是第一个实参 arguments[1] 表示的是第二个实参 以此类推..…

2022年全球运维大会(GOPS深圳站)-核心PPT资料下载

一、峰会简介 GOPS 主要面向运维行业的中高端技术人员,包括运维、开发、测试、架构师等群体。目的在于帮助IT技术从业者系统学习了解相关知识体系,让创新技术推动社会进步。您将会看到国内外知名企业的相关技术案例,也能与国内顶尖的技术专家…

【数据结构】链式家族的成员——循环链表与静态链表

循环链表与静态链表 导言一、循环链表1.1 循环单链表1.2 循环双链表 二、静态链表2.1 静态链表的创建2.2 静态链表的初始化2.3 小结 结语 导言 大家好!很高兴又和大家见面啦!!! 经过前面的介绍,相信大家对链式家族的…

软件测试/测试开发丨Mac Appium环境搭建

Mac 上 Appium 环境搭建 安装 nodejs 与 npm 安装方式与 windows 类似 ,官网下载对应的 mac 版本的安装包,双击即可安装,无须配置环境变量。官方下载地址:https://nodejs.org/en/download/ 安装 appium Appium 分为两个版本&a…

【Transformer】深入理解Transformer模型1——初步认识了解

前言 Transformer模型出自论文:《Attention is All You Need》 2017年 近年来,在自然语言处理领域和图像处理领域,Transformer模型都受到了极为广泛的关注,很多模型中都用到了Transformer或者是Transformer模型的变体&#xff0…

ElasticSearch--基本操作

ElasticSearch 完成ES安装 http://101.42.93.208:5601/app/dev_tools#/console 库的操作 创建索引库 请求方式:PUT 请求路径:/索引库名,可以自定义 请求参数:mapping映射 PUT /test {"mappings": {"propertie…

计算机硬件 4.3显示器

第三节 显示器 一、基本概念 1.定义:将电信号转换为可以直接看到的图像的最基本输出设备。 2.分类:按显示色彩分:单色显示器、彩色显示器。 按显示原理分:CRT显示器、LCD显示器、LED显示器、OLED显示器。 3.原理结构&#xff…

【Oracle】 Oracle Sequence 性能优化

Sequence是很简单的,如果最大程度利用默认值的话,我们只需要定义sequence对象的名字即可。在序列Sequence对象的定义中,Cache是一个可选择的参数。默认的Sequence对象是有cache选项的,默认取值为20。这个默认值对于大多数情况下都…

云原生|kubernetes|kubernetes资源备份和集群迁移神器velero的部署和使用

前言: kubernetes集群需要灾备吗?kubernetes需要迁移吗? 答案肯定是需要的 那么,如何做kubernetes灾备和迁移呢?当然了,有很多的方法,例如,自己编写shell脚本,或者使用…

2023年江苏省职业院校技能大赛高职组“软件测试”赛项接口测试答案报告(含术语)

2023年江苏省职业院校技能大赛高职组“软件测试”赛项接口测试答案报告 接口测试要求: 1、执行接口测试 本部分按照软件接口测试文档要求,执行接口测试;使用接口测试工具PostMan,编写脚本、配置参数、执行接口测试并且截图。截图需粘贴在接口测试总结报告中。接口测试具体…

06-C++ 模板

模板、类型转换 模板 1. 简介 一种用于实现 通用编程 的机制。 将 数据类型 可以作为参数进行传递 。 通过使用模板&#xff0c;我们可以编写可复用的代码&#xff0c;可以适用于多种数据类型。 c模板的语法使用尖括号 < > 来表示泛型类型&#xff0c;并使用关键字…

啊?这也算事务?!

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

Java中的Optional类使用技巧

在Java中&#xff0c;Optional 是一个可以为null的容器对象。如果值存在则isPresent()方法返回true&#xff0c;调用get()方法会返回该对象。 使用Optional可以有效地防止NullPointerException。 下面是一些使用Optional的技巧&#xff1a; 创建Optional对象&#xff1a; Opt…

php-m和phpinfo之间不一致的问题的可能原因和解决办法

1.不同的 PHP配置文件: php -m 和 phpinfo 可能会使用不同的 PHP 配置文件。确保它们都使用相同的配置文件。你可以在命令行中使用 php --ini 来查找当前使用的配置文件位置&#xff0c;并在 phpinfo 中查看 Loaded Configuration File 来确保它们相同。 2.不同的 PHP 版本:确…

uni-app封装表格组件

组件代码&#xff1a; <template><view><uni-table class"tableBox" border stripe emptyText""><!-- 表头行 --><uni-tr class"tableTr"><uni-th :sortable"item.sortable" :class"item.sort…

【人工智能新闻】2023年人工智能热门新闻

欢迎收看我们的特别版时事通讯&#xff0c;重点报道“2023年人工智能热门新闻”今年是人工智能领域的里程碑&#xff0c;展示了重塑技术和我们日常生活的突破性进步和创新。从大型企业投资到革命性的技术发布&#xff0c;2023年的每个月都带来了非凡的成就。 加入我们&#xf…

什么是CAS,什么是AQS,两者到底有什么区别

首发2023-12-29 12:41yuan人生 CAS和AQS在java多线程编程中经常会涉及到&#xff0c;在许多面试的时候也会经常问到。但很多同学却不了解他们&#xff0c;那我们来一起看看什么是CAS&#xff0c;什么是AQS&#xff0c;两者到底有什么区别。 详见&#xff1a;https://www.touti…

用 Python 提取某一个公众号下的所有文章

当我们想要提取某一个公众号下的所有文章时&#xff0c;我们可以借助微信公众平台的开放接口&#xff0c;通过Python编写一个爬虫程序来实现。下面是一个示例代码&#xff0c;以及如何将其转化为一篇详细的微信公众号推文文章。 1. 导入所需库 首先&#xff0c;我们需要导入所…

LLM提示词工程学习_Day01

LLM提示词工程学习_Day01 安装学习环境基础Conda环境安装安装Python安装所需的包Jupyter Notebook 安装获取OpenAI API KEY&#xff0c;并写入工程目录里的.env文件进入Jupyter&#xff0c;先跑一段代码 安装学习环境 基础Conda环境安装 conda环境安装&#xff0c;miniconda也…

序列化机制以及应用场景

当谈到 Java 编程语言时&#xff0c;序列化机制是一个重要而又常见的概念。它允许对象在网络上传输或者保存到持久存储设备中。Java 提供了一个内建的序列化机制&#xff0c;它可以将对象转换为字节流&#xff0c;这个过程称为序列化&#xff0c;同时也能从字节流中重新构建对象…