从字典中打印一行中具有相同值的不同键

时间:2018-05-21 08:36:44

标签: python dictionary

这是一个示例字典。

example = {'a': 10, 'b': 12, 'c': 10, 'd': 12}

我想像下面一样打印它们。

12 b, d
10 a, c

2 个答案:

答案 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])