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 相关文章推荐
Pthon批量处理将pdb文件生成dssp文件
Jun 21 Python
Python实现拷贝多个文件到同一目录的方法
Sep 19 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
python实现图片筛选程序
Oct 24 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
Aug 06 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
Django和Flask框架优缺点对比
Oct 24 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 Python
Python创建一个元素都为0的列表实例
Nov 28 Python
基于Python绘制美观动态圆环图、饼图
Jun 03 Python
Python实现GIF图倒放
Jul 16 Python
python数据可视化使用pyfinance分析证券收益示例详解
Nov 20 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函数学习之PHP函数点评
2012/07/05 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
PHP7移除的扩展和SAPI
2021/03/09 PHP
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
浅谈在Vue.js中如何实现时间转换指令
2019/01/06 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
JavaScript实现答题评分功能页面
2020/06/24 Javascript
vue项目中使用多选框的实例代码
2020/07/22 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
python 不以科学计数法输出的方法
2018/07/16 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
python实践项目之监控当前联网状态详情
2019/05/23 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
Python JSON编解码方式原理详解
2020/01/20 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
详解Python 循环嵌套
2020/07/09 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
好的自荐信包括什么内容
2013/11/07 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
学年个人总结范文
2015/03/05 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书