这是一个示例字典。
example = {'a': 10, 'b': 12, 'c': 10, 'd': 12}
我想像下面一样打印它们。
12 b, d
10 a, c
答案 0 :(得分:1)
有两种方法可以解决这个问题。
高效:collections.defaultdict(列表)
构造一个包含键和值的新字典。重要的是,您可以拥有重复值,因此我们使用列表来保存这些值。 Pythonic方法是使用collections.defaultdict
。
对于非常大的字典,这可能会产生很大的内存开销。
example = {'a': 10, 'b': 12, 'c': 10, 'd': 12}
from collections import defaultdict
d = defaultdict(list)
for k, v in example.items():
d[v].append(k)
for k, v in d.items():
print(k, ' '.join(v))
10 a c
12 b d
手动:列表推导循环
这种方式计算效率低,但需要较少的内存开销:
for value in set(example.values()):
print(value, ' '.join([k for k, v in example.items() if v == value]))
10 a c
12 b d
答案 1 :(得分:0)
这是否实现了您的目标?
for i in set(example.values()):
print (i, [list(example.keys())[j] for j in range(len(example)) if list(example.values())[j]==i])