我有以下字典
{'u1': 0, 'u2': 0, 'u3': 1, 'u4': 2, 'u5': 2, 'u6': 3, 'u7': 4, 'u8': 4, 'u9': 3}
我想获得:
[['u1', 'u2'], ['u3'], ['u4', 'u5'], ['u6', 'u9'], ['u7', 'u8']]
答案 0 :(得分:1)
您可以使用dict.setdefault
d = {'u1': 0, 'u2': 0, 'u3': 1, 'u4': 2, 'u5': 2, 'u6': 3, 'u7': 4, 'u8': 4, 'u9': 3}
new = dict()
for k,v in d.items():
new.setdefault(v,[]).append(v)
list(out.values())
# [['u1', 'u2'], ['u3'], ['u4', 'u5'], ['u6', 'u9'], ['u7', 'u8']]
from collection import defaultdict
new = defaultdict(list)
for k,v in d.items():
new[v].append(k)
list(new.values())
# [['u1', 'u2'], ['u3'], ['u4', 'u5'], ['u6', 'u9'], ['u7', 'u8']]
答案 1 :(得分:1)
ini_dict = {'u1': 0, 'u2': 0, 'u3': 1, 'u4': 2, 'u5': 2, 'u6': 3, 'u7': 4, 'u8': 4, 'u9': 3}
flipped = {}
for key, value in ini_dict.items():
if value not in flipped:
flipped[value] = [key]
else:
flipped[value].append(key)
输出将为
Result [['u1', 'u2'], ['u3'], ['u4', 'u5'], ['u6', 'u9'], ['u7', 'u8']]
只需翻转值并创建具有值和要对其进行迭代的键列表的新字典就可以了。只需在反向字典中查找重复值即可。
答案 2 :(得分:0)
您可以使用类似这样的内容:
dictionary={'u1': 0, 'u2': 0, 'u3': 1, 'u4': 2, 'u5': 2, 'u6': 3, 'u7': 4, 'u8': 4, 'u9': 3}
[[k,v] for k,v in dictionary.items()]
结果:
[['u1', 0], ['u2', 0], ['u3', 1], ['u4', 2], ['u5', 2], ['u6', 3], ['u7', 4], ['u8', 4], ['u9', 3]]
答案 3 :(得分:0)
d = {'u1': 0, 'u2': 0, 'u3': 1, 'u4': 2, 'u5': 2, 'u6': 3, 'u7': 4, 'u8': 4, 'u9': 3}
print(d)
l=[[],[],[],[],[],[]]
for k,v in d.items():
l[v].append(k)
print(l)
给予
[['u1', 'u2'], ['u3'], ['u4', 'u5'], ['u6', 'u9'], ['u7', 'u8'], []]