【问题标题】:Getting a key corresponding to a specific value in a dictionary in python在python中获取与字典中特定值相对应的键
【发布时间】:2021-11-17 03:30:01
【问题描述】:

我有一个简单的问题,关于在 python 的字典中获取与特定值对应的键。请注意我只需要一个命令或一个方法()。不用for循环,不用写def代码,不用map,lambda等,如果有直接的method()或者命令,请回复。如果python中不存在这样的命令,请创建它并将其添加到库中。我建议使用 dic_inverse[value] 或 dic.inv(value) 来命名此类命令。

示例:如何通过一个简单、清晰、漂亮的method()或命令返回一个特定值=20对应的key?

  dict = {'age': 20, 'height' : 154}
  dict_inverse[20] = ????
  or dict.inverse(20) = ????

【问题讨论】:

  • dict 类中没有单一的方法可以做到这一点。
  • 尝试使用 bidict 包bidict.readthedocs.io/en/main。这是一本双向词典。它允许您执行element_by_symbol['H']element_by_symbol.inverse['hydrogen'] 之类的操作。
  • 你说没有单一的方法。我喜欢你的回答,因为我要求一种方法来做到这一点。现在我的问题是,为什么不能创建这样一个有用的命令(或方法())并将其添加到python库中?我很惊讶python中缺少这样的命令。如果您碰巧知道答案,请回答我的问题。

标签: python dictionary key key-value


【解决方案1】:

我确定您说的是Enum。确保这些值始终是唯一的,否则它只会返回与该值关联的第一个键。

初始化枚举

首先,您可以通过设置一个继承自类 Enum 的类来初始化您的 Enum。

from enum import Enum

class Person(Enum):
    age = 20
    height = 154

访问键和值

然后,你可以从一个键中获取对应的值。

>>> print(Person.age.value)
20

或者你可以向后做,从一个值中获取键。

>>> print(Person(154).name)
height

【讨论】:

  • 我以前没有听说过 Enum。我特别喜欢您的解决方案,它是一个命令,但看起来必须首先定义该类,并且需要更多的工作。想象一下你做了很多单一的短代码,你不想为每个代码或每个字典定义一个类。不过谢谢。
【解决方案2】:

创建和查找逆向字典非常简单。您可以将其抽象为一个函数并传入 dict 和 value 以使您的代码更清晰。

def lookup_by_val(d, val)
    inverse_dict = {v: k for k, v in d.items()}
    return inverse_dict[val]

附:如果您不确定输入不安全,您可能需要添加错误处理。

【讨论】:

  • 谢谢,这是一个很好的简短功能。虽然,我喜欢它,但在我的问题中,我不是通过编写函数来询问单个方法()或命令。不过谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 2022-12-05
  • 2016-11-20
  • 2017-01-05
  • 1970-01-01
  • 2013-08-07
相关资源
最近更新 更多