【问题标题】:How can you print a key given a value in a dictionary for Python?如何在 Python 的字典中打印给定值的键?
【发布时间】:2013-03-24 22:56:57
【问题描述】:

例如,假设我们有以下字典:

dictionary = {'A':4,
              'B':6,
              'C':-2,
              'D':-8}

如何打印给定值的某个键?

print(dictionary.get('A')) #This will print 4

你怎么能倒着做呢?即不是通过引用键来获取值,而是通过引用值来获取键。

【问题讨论】:

标签: python dictionary key


【解决方案1】:

我不相信有办法做到这一点。这不是字典的用途...... 相反,您必须执行与此类似的操作。

for key, value in dictionary.items():
    if 4 == value:
        print key

【讨论】:

  • +1,尤其是很多键都可以包含搜索到的值
  • 我认为因为我使用的是 python 3,所以它应该是 items() 而不是 iteritems()。谢谢你这工作。
  • 我认为您对 .items() 的看法是正确的,我会将其编辑到我的答案中。
【解决方案2】:

在 Python 3 中:

# A simple dictionary
x = {'X':"yes", 'Y':"no", 'Z':"ok"}

# To print a specific key (for instance the 2nd key which is at position 1)
print([key for key in x.keys()][1])

输出:

Y

【讨论】:

    【解决方案3】:

    字典的组织方式是:key -> value

    如果你尝试去:值 -> 键

    那么你有几个问题;重复,有时字典会包含您不希望将其作为键的大型(或不可散列的)对象。


    但是,如果您仍然想这样做,您可以通过迭代 dicts 键和值并按如下方式匹配它们来轻松地做到这一点:

    def method(dict, value):
        for k, v in dict.iteritems():
            if v == value:
                yield k
    # this is an iterator, example:
    >>> d = {'a':1, 'b':2}
    >>> for r in method(d, 2):
        print r
    
    b
    

    正如评论中所指出的,整个事情可以写成一个生成器表达式:

    def method(dict, value):
        return (k for k,v in dict.iteritems() if v == value)
    

    Python 版本注意:在 Python 3+ 中,您可以使用 dict.items() 而不是 dict.iteritems()

    【讨论】:

    • 或者,只是return (k for k,v in d.iteritems() if v == value)
    • @nneonneo 是的,但我在这里使用了一个更简单的示例。
    • 不仅大,而且不可散列的对象(像大多数集合一样)都会导致问题。
    【解决方案4】:
    target_key = 4
    for i in dictionary:
        if dictionary[i]==target_key:
            print(i)
    

    【讨论】:

      【解决方案5】:

      如果您必须在字典中找到最高 VALUE 的 KEY,请执行以下操作:

      1. 第一步:将所有VALUES提取到一个列表中,找到列表的最大值
      2. 第 2 步:从第 1 步中找到特定 VALUE 的 KEY

      此代码的可视化分析器可在此链接中找到:LINK

          dictionary = {'A':4,
                    'B':6,
                    'C':-2,
                    'D':-8}
      lis=dictionary.values()
      print(max(lis))
      for key,val in dictionary.items() :
          if val == max(lis) :
              print("The highest KEY in the dictionary is ",key)
      

      【讨论】:

      • 问题是要求进行一般的反向查找,而不是找到与最大值对应的键。
      【解决方案6】:

      嘿,我被这个问题困扰了很久,你所要做的就是将键与值交换,例如

      Dictionary = {'Bob':14} 
      

      你可以改成

      Dictionary ={1:'Bob'} 
      

      反之亦然,将键设置为值,将值设置为键,这样你就可以得到你想要的东西

      【讨论】:

        猜你喜欢
        • 2014-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-18
        相关资源
        最近更新 更多