1

这是一个示例字典。

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

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

12 b, d
10 a, c
4

2 回答 2

1

有两种方法可以解决这个问题。

高效:collections.defaultdict(list)

构造一个键和值倒置的新字典。重要的是,您可以有重复的值,因此我们使用一个列表来保存这些值。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
于 2018-05-21T08:43:49.423 回答
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])
于 2018-05-21T08:43:26.890 回答