我有一个值的字典,给出了列表中值的出现次数。我怎样才能返回一个新的词典,基于该值将前一个词典分成单独的词典?如何根据键的出现次数对字典进行“排序”?
换句话说,我想解决这词典:
>>> a = {'A':2, 'B':3, 'C':4, 'D':2, 'E':3}
这一个。
b = {2: {'A', 'D'}, 3: {'B', 'E'}, 4: {'C'}}
如何解决问题?
我有一个值的字典,给出了列表中值的出现次数。我怎样才能返回一个新的词典,基于该值将前一个词典分成单独的词典?如何根据键的出现次数对字典进行“排序”?
换句话说,我想解决这词典:
>>> a = {'A':2, 'B':3, 'C':4, 'D':2, 'E':3}
这一个。
b = {2: {'A', 'D'}, 3: {'B', 'E'}, 4: {'C'}}
如何解决问题?
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
正常字典之后。
,如果你是像我这样的蟒蛇初学者,你可能想尝试这个
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)
它采用p的可变属性ython字典来实现你想要的结果。
没有必要明确地将其转换为'dict'。它表现得像普通字典:) –
@MoinuddinQuadri不一定。作为一个例子,试图访问一个缺失的关键字会在defaultdict中添加一个条目,所以如果你以后检查该关键字是否在字典中,你就会得到'True',这可能不是你想要的。 – fenceop