1

我有一本字典,比如说 d1,它看起来像这样:

d = {'file1': 4098, 'file2': 4139, 'file3': 4098, 'file4': 1353, 'file5': 4139}

现在,我已经想出如何让它告诉我是否有任何重复。但我想让它做的是告诉我是否有,以及哪些 2(或更多)值(和相应的键)是重复的。

上面的输出会告诉我 file1 和 file3 是相同的,而 file2 和 file5 是相同的

我已经尝试了几个小时,但还没有找到正确的解决方案。

4

1 回答 1

1

试试这个来获得重复项:

[item for item in d.items() if [val for val in d.values()].count(item[1]) > 1]

输出:

[('file3', 4098), ('file2', 4139), ('file1', 4098), ('file5', 4139)]

接下来按元组中的第二项对列表进行排序:

list = sorted(list, key=operator.itemgetter(1))

最后用于itertools.groupby()按第二项分组:

list = [list(group) for key, group in itertools.groupby(list, operator.itemgetter(1))]

最终输出:

[[('file3', 4098), ('file1', 4098)], [('file2', 4139), ('file5', 4139)]]

于 2013-10-31T20:26:10.807 回答