【问题标题】:Find max and print key, value pair of a dictionary [duplicate]查找字典的最大值并打印键、值对[重复]
【发布时间】:2016-01-19 19:39:04
【问题描述】:
{'19': 3, '18': 7}

如果我有一个类似上面的列表,我如何找到最大值,然后打印键、值对,如:

(['18'], 7)

【问题讨论】:

  • 您之所以在列表中有'18',是因为您希望在多个键具有相同最大值的情况下查看多个键吗?
  • 哦,我明白了,谢谢@zehnpaard 在字里行间的阅读方式...

标签: python dictionary


【解决方案1】:
print max(data.iteritems(),key=lambda x:x[-1])

也许?我不太确定要诚实

【讨论】:

    【解决方案2】:

    有更多的 Pythonic 方式来做这些事情,但我希望这可以为您清楚地说明这些步骤。首先我们反转字典。找到最大值

    data = {'19': 3, '18': 7}
    data_rev = dict([(value, key) for (key,value) in data.iteritems()])
    print data_rev
    
    max_val = max(data_rev.keys())
    

    如果你想在单个语句中看到它:

    out_tuple = ([dict([(value, key) for (key,value) in data.iteritems()])[max(data.values())]], max(data.values()))
    

    【讨论】:

      【解决方案3】:

      最直接的方法是迭代并找到它:

      max_pair = None
      for k,v in thedict.items():
         if (max_pair is None) or (v > max_pair[1]):
            max_pair = (k,v)
      
      print max_pair
      

      但标准库提供了一些更“pythonic”的方式来获取相同的信息..

      from functools import partial
      from operator import itemgetter
      print max(thedict.items(), key=partial(itemgetter, 1))
      

      这假设您只想获取最大值出现的第一个键。相反,如果您想要出现最大值的所有键,则必须分两次执行(一次找到最大值,一次找到所有键)。

      max_val = max(thedict.values())
      max_pair = (tuple(k for k in thedict if thedict[k] == max_val), max_val)
      

      【讨论】:

        猜你喜欢
        • 2011-11-02
        • 1970-01-01
        • 2012-09-06
        • 2012-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        相关资源
        最近更新 更多