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使用心得之获得github代码库列表
Jun 25 Python
python绘图方法实例入门
May 19 Python
python中reduce()函数的使用方法示例
Sep 29 Python
深入浅析python 中的匿名函数
May 21 Python
PyCharm在新窗口打开项目的方法
Jan 17 Python
Python Print实现在输出中插入变量的例子
Dec 25 Python
在TensorFlow中屏蔽warning的方式
Feb 04 Python
Python实现动态给类和对象添加属性和方法操作示例
Feb 29 Python
virtualenv介绍及简明教程
Jun 23 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
教你用python实现一个无界面的小型图书管理系统
May 21 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 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
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
基于node.js的快速开发透明代理
2010/12/25 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
Python实现FM算法解析
2019/06/18 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
Python中的wordcloud库安装问题及解决方法
2020/05/27 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
培训班主持词
2014/03/28 职场文书
公司踏青活动方案
2014/08/16 职场文书
科学发展观活动总结
2014/08/28 职场文书
公司行政管理制度范本
2015/08/05 职场文书
高考升学宴主持词
2019/06/21 职场文书
详解python的内存分配机制
2021/05/10 Python
opencv 分类白天与夜景视频的方法
2021/06/05 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript