【问题标题】:how to identify highest value key in nested dictionary? [duplicate]如何识别嵌套字典中的最高值键? [复制]
【发布时间】:2018-10-15 10:04:31
【问题描述】:

作为一个python新手,我有一本字典d:

d={'a':{'1':4,'2':6},'b':{'1':5,'2':10}}

我需要为每个键 ('a','b') 找到最高值的子键,并将它们捆绑在一个新字典 newd 中,看起来像

newd={'a':'2', 'b':'2'}

实现这一目标的最佳方法是什么?

【问题讨论】:

  • 如果两个键的值最大,比如{'a': {'1': 4, '2': 4}},该怎么办?随便选一个?

标签: python


【解决方案1】:

您可以通过max 使用字典推导:

d={'a':{'1':4,'2':6},'b':{'1':5,'2':10}}
new_d = {a:max(b, key=b.get) for a, b in d.items()}

输出:

{'a': '2', 'b': '2'}

【讨论】:

    【解决方案2】:
    d = {'a': {'1':4,'2':6},'b': {'1':5,'2':10}}
    
    newd = {}
    for key, value in d.items():
        max_value = max([i for i in value.values()])
        for k in value:
                if value[k] == max_value:
                        newd[key] = k
    
    print(newd)
    # prints '{'a': '2', 'b': '2'}'
    

    【讨论】:

    • 看起来OP想要与最高值对应的键,而不是本身最高的键。
    • 嗯好吧我误会了,我会编辑我的答案
    • 现在应该没问题了。当有多个键对应于最高值时,我知道 op 想要什么。
    • 这是个好问题。
    【解决方案3】:
    new_dict = {}
    for k, v in d.items():
        new_dict[k] = max(v.values())
    

    【讨论】:

      猜你喜欢
      • 2021-09-03
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 2019-02-06
      • 2013-11-13
      • 1970-01-01
      • 2018-09-27
      相关资源
      最近更新 更多