Python如何通过单个内置方法获取字典指定值对应的键
问题解答
Python 原生dict类型暂未内置inv()这类直接通过值查找对应键的官方方法,不过你可以通过单条内置语句实现需求,无需使用循环、lambda 或自定义函数。
单语句实现方案
你可以借助内置的zip()和dict()构造反转字典,直接取值即可,示例代码如下:
# 注意不要用dict作为变量名,会覆盖内置类型 my_dict = {'age': 20, 'height' : 154} # 单条语句获取值20对应的键 result = dict(zip(my_dict.values(), my_dict.keys()))[20] print(result) # 输出:age
为什么没有内置反向查询方法
dict 的设计逻辑是键唯一、但值允许重复,反向查询存在天然歧义:
- 如果同一个值对应多个键,无法确定默认返回单个键还是所有匹配键的列表
- 反向查询的时间复杂度是O(n),和dict原生按键查询O(1)的效率差距很大,官方不希望给用户造成反向查询也高效的误解
如果你能确保所有值唯一,上述反转字典的方案完全可以满足你要的简洁调用需求,也可以提前预生成反转字典后续复用。
内容的提问来源于stack exchange,提问作者anonymous
相关产品推荐
相关产品推荐

