关于python:在字典的一行中打印具有相同值的不同键

Printing different keys that have same value in one row from a dictionary

本问题已经有最佳答案,请猛点这里访问。

这是一本示例字典。

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

我想打印如下。

1
2
12 b, d
10 a, c


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

高效:collections.defaultdict(list)

构造一个键和值颠倒的新字典。重要的是,您可以有重复的值,所以我们使用一个列表来保存这些值。肾盂入路采用collections.defaultdict

对于非常大的字典,这可能有很大的内存开销。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

手册:列表理解循环

这种方法计算效率很低,但需要较少的内存开销:

1
2
3
4
5
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
2
for i in set(example.values()):
    print (i, [list(example.keys())[j] for j in range(len(example)) if list(example.values())[j]==i])