python字典通过值反查键的实现(简洁写法)


Posted in Python onSeptember 30, 2020

通过键查值比较容易,通过值反查键就稍微麻烦点,这里给大家提供点思路。 

由于值是可以重复的,所以分成两种情况给大家展示: 

第一种是值唯一的情况直接构造列表,通过value的索引取对应的key。 

第二种是值不唯一的情况,需要通过for遍历出所有的索引然后查出所有对应的key。

如果你需要打印所有满足查询值所对应的key,选第二种;

如果你只需要打印首次出现查询值所对应的key,选第一种。

代码如下:

#假如值唯一
mydisc = {'key1':'123', 'key2':'234', 'key3':'345'}
get_value = input('请输入要查值:')
if get_value in mydisc.values():
  print(list(mydisc.keys())[list(mydisc.values()).index(get_value)])
else:
  print('你要查询的值'+get_value+'不存在')
# 假如值不唯一
mydisc = {'key1':'123', 'key2':'234', 'key3':'345','key5':'123'}
get_value = input('请输入要查值:')
if get_value in mydisc.values():
  for a in range(0,len(mydisc)):
    if list(mydisc.values())[a]==get_value:
      print(list(mydisc.keys())[a])
else:
  print('你要查询的值'+get_value+'不存在')

有些同学对这段不理解

list(mydisc.keys())[list(mydisc.values()).index(get_value)]

我这里给大家解释下,为方便理解,我们拆解为

A[B.index(get_value)]
其中:
A=list(mydisc.keys())
B=list(mydisc.values()) 

知识点一:mydisc.keys()——取出字典mydisc的所有key

知识点二:list(list)——将list转化为列表,列表的好处就是有序,所以能通过list[index]取元素

所以A是将字典mydisc所有Key取出并用list()方法构建一个“键列表”,A=[‘key1', ‘key2', ‘key3']
同理B是将字典mydisc所有Value取出并用list()方法构建一个“值列表”,B=[123,234,345]
这个时候我们只需要知道get_value在B中的索引,然后找到A中对应索引的元素即可。

知识点三:list.index(x)——返回元素x在list中的索引(如果list中存在多个重复的x,会返回首次出现的索引)

所以B.index(get_value)的意思是返回get_value在B列表中的索引

知识点四:list[x]——取list中第x个元素的值

A[B.index(get_value)]就将get_value的键取出了。

这里是充分利用了列表的一些语法并糅合在一起,是一种简洁的通过值取键写法,仅供大家学习交流。

到此这篇关于python字典通过值反查键的实现(简洁写法)的文章就介绍到这了,更多相关python字典值反查键内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
简介Python中用于处理字符串的center()方法
May 18 Python
python妹子图简单爬虫实例
Jul 07 Python
基于Python的文件类型和字符串详解
Dec 21 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
详解python多线程之间的同步(一)
Apr 03 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
May 21 Python
浅析Python 中几种字符串格式化方法及其比较
Jul 02 Python
python 实现多线程下载视频的代码
Nov 15 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
Jan 04 Python
如何利用python web框架做文件流下载的实现示例
Jun 02 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 Python
python中字典增加和删除使用方法
Sep 30 #Python
Scrapy爬虫文件批量运行的实现
Sep 30 #Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 #Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
Sep 30 #Python
python pip如何手动安装二进制包
Sep 30 #Python
python Matplotlib数据可视化(1):简单入门
Sep 30 #Python
详解Python中的编码问题(encoding与decode、str与bytes)
Sep 30 #Python
You might like
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
php函数式编程简单示例
2019/08/08 PHP
基于jQuery的日期选择控件
2009/10/27 Javascript
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
[42:52]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
利用Python如何生成随机密码
2016/04/20 Python
python编码总结(编码类型、格式、转码)
2016/07/01 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
python调用c++传递数组的实例
2019/02/13 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
EJB的角色和三个对象
2015/12/31 面试题
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
优秀求职信
2014/05/29 职场文书
违反交通法规检讨书
2014/09/10 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
学校师德师风整改方案
2014/10/28 职场文书
网吧温馨提示
2015/07/17 职场文书
电力安全学习心得体会
2016/01/18 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
HTML+JS实现在线朗读器
2022/02/15 Javascript
Java死锁的排查
2022/05/11 Java/Android