Skip to main content
 首页 » 编程设计

python之比较列表中元组的元素

2025年05月04日13Terrylee

我正在尝试编写一个代码来比较每个元组的第二个元素并提取包含第二个元素重复项的元组。

例如,如果我有

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)]}