【问题标题】:How to "sort" a dictionary by number of occurrences of a key?如何按键的出现次数“排序”字典?
【发布时间】:2016-12-04 23:00:29
【问题描述】:

我有一个值字典,它给出了一个值在列表中出现的次数。如何返回一个新字典,根据值将以前的字典分成单独的字典?

也就是说,我要对这个字典进行排序:

>>> a = {'A':2, 'B':3, 'C':4, 'D':2, 'E':3}

到这个。

b = {2: {'A', 'D'}, 3: {'B', 'E'}, 4: {'C'}}

我该如何解决这个问题?

【问题讨论】:

    标签: python python-3.x sorting dictionary


    【解决方案1】:
    from collections import defaultdict
    
    a = {'A': 2, 'B': 3, 'C': 4, 'D': 2, 'E': 3}
    
    b = defaultdict(set)
    for k, v in a.items():
        b[v].add(k)
    

    这就是你会得到的:

    defaultdict(<class 'set'>, {2: {'D', 'A'}, 3: {'B', 'E'}, 4: {'C'}})
    

    之后您可以使用b = dict(b)b 转换为普通字典。

    【讨论】:

    • 无需将其显式转换为dict。它的行为就像普通字典:)
    • @MoinuddinQuadri 不一定。例如,尝试访问缺少的键会在defaultdict 中添加一个条目,因此如果您稍后检查该键是否在字典中,您会得到True,这可能不是您想要的。
    【解决方案2】:

    如果你像我一样是 python 初学者,你可能想试试这个

    a = {'A': 2, 'B': 3, 'C': 4, 'D': 2, 'E': 3}

    b = {}

    输入一个:

    lst = []
    
    new_key = a[key]
    
    if new_key not in b:
    
        lst.append(key)
    
        b[new_key] = lst
    
    else:
    
        b[new_key].append(key)
    

    打印(b)

    它使用python字典的可变属性来达到你想要的结果。

    【讨论】:

      猜你喜欢
      • 2019-05-27
      • 2021-04-24
      • 2017-08-20
      • 1970-01-01
      • 2017-05-30
      • 2021-11-27
      • 2011-06-17
      • 2016-08-31
      相关资源
      最近更新 更多