如何按键的出现次数“排序”字典?

时间:2016-12-04 23:00:29

标签: python python-3.x sorting dictionary

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

换句话说,我想对这本字典进行排序:

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

到这一个。

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

我该如何处理这个问题?

2 个答案:

答案 0 :(得分:3)

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'}})

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

答案 1 :(得分:0)

如果你是像我这样的蟒蛇初学者,你可能想尝试这个

a = {&#39; A&#39;:2,&#39; B&#39;:3,&#39; C&#39; :4,&#39; D&#39; :2,&#39; E&#39; :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字典的mutable属性来实现你想要的结果。