我正在尝试编写一个代码来比较每个元组的第二个元素并提取包含第二个元素重复项的元组。
例如,如果我有
List = [(0, 2), (1, 0), (2, 1), (3, 2)]
duplicate_tuples = [(0, 2), (3, 2)] # desired output
我只是不知道如何在我的 for 迭代中指定第二个元素
for i in List: # would iterate each tuple
if i[1] of i in List is duplicate...
缺少 pythonic 语法令人沮丧。我应该如何解决这个问题?
请您参考如下方法:
您可以在 collections.defaultdict() 中收集您的元组,然后报告具有多个重复项的列表:
from collections import defaultdict
lst = [(0, 2), (1, 0), (2, 1), (3, 2), (2, 0)]
dups = defaultdict(list)
for fst, snd in lst:
dups[snd].append((fst, snd))
print([v for k, v in dups.items() if len(v) > 1])
# [[(0, 2), (3, 2)], [(1, 0), (2, 0)]]
或者将重复项保存在字典中以便于查找:
print({k: v for k, v in dups.items() if len(v) > 1})
# {2: [(0, 2), (3, 2)], 0: [(1, 0), (2, 0)]}
