【问题标题】:how to retrieve all keys with a given value from dictionary in python如何从python中的字典中检索具有给定值的所有键
【发布时间】:2017-10-09 10:08:38
【问题描述】:

我想获取给定值的字典键列表。例如

my_dict = {1: 2, 3: 3, 4: 2}
value = 2

我想得到 1 和 4。

如何获取对应键列表?

【问题讨论】:

  • 你试过什么?这相对容易做到,无需额外的库和简单的list 理解。
  • 字典是为了在另一个方向上查找。如果你必须经常查找值 -> 键,你应该修改你的数据结构。

标签: python python-3.x dictionary data-structures


【解决方案1】:

列表推导式可以在线性时间内完成 - 如果您需要一次。 如果您的设计需要交替检索keys -> valuesvalues->keys mappings,您可以设计自己的类或使用库。

我自己的 Python 的 Extradict 有一个 BijectiveDict 类可以做到这一点,尽量直接。

但请注意,您需要在此处进一步指定所需的行为 - 在您的示例中,值 2 与 2 个键相关联。 BijectiveDict 的默认行为是简单地覆盖早期的分配:您只需检索绑定到某个值的最新键。

【讨论】:

    【解决方案2】:

    使用列表推导,您可以过滤每个值以及每个键:

    given_value = 2
    keys_list = [k for k, v in my_dict.items() if v == given_value]  # [1, 4]
    

    或者使用Python内置filter

    given_value = 2
    keys_iter = filter(lambda k: my_dict[k] == given_value, my_dict.keys()) # return an iterator
    keys_list = list(keys_iter)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 2013-11-13
      • 2018-02-12
      相关资源
      最近更新 更多