首页 > 解决方案 > 如果元组的第一个值是另一个元组的副本,如何从元组列表中删除元组

问题描述

如果元组的第一个值与另一个元组重复,我需要从元组列表中删除元组。例如这是一个元组列表

 ('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland'),
 ('genera', 23, 'https://en.wikipedia.org/wiki/Genus'),
 ('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland_Airport'),
 ('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland'),
 ('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland'),
 ('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland'),
 ('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland_Region'),
 ('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland_Region'),
 ('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland'),
 ('Islands',28,'https://en.wikipedia.org dddfdfdf/wiki/'),
 ('South Island', 29, 'https://en.wikipedia.org/wiki/South_Island'),
 ('South Island', 29, 'https://en.wikipedia.org/wiki/South_Island'),
 ('South Island', 29, 'https://en.wikipedia.org/wiki/South_Island'),
 ('South Island', 29, 'https://en.wikipedia.org/wiki/South_Island'),

输出必须是这样的:

 ('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland'),
 ('genera', 23, 'https://en.wikipedia.org/wiki/Genus'),
 ('Islands',28,'https://en.wikipedia.org dddfdfdf/wiki/'),
 ('South Island', 29, 'https://en.wikipedia.org/wiki/South_Island')

我正在尝试在网络上搜索的所有内容

标签: pythonsettuples

解决方案


您好,欢迎来到 Stack Overflow。你的问题提到了一个元组列表。因此,我假设您的列表如下所示:

all =[('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland'),
('genera', 23, 'https://en.wikipedia.org/wiki/Genus'),
('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland_Airport'),
('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland'),
('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland'),
('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland'),
('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland_Region'),
('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland_Region'),
('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland'),
('Islands',28,'https://en.wikipedia.org dddfdfdf/wiki/'),
('South Island', 29, 'https://en.wikipedia.org/wiki/South_Island'),
('South Island', 29, 'https://en.wikipedia.org/wiki/South_Island'),
('South Island', 29, 'https://en.wikipedia.org/wiki/South_Island'),
('South Island', 29, 'https://en.wikipedia.org/wiki/South_Island')]

如果是这种情况,根据第一个值获得唯一结果的最简单方法是将元组列表更改为一个集合(始终唯一并在以下 for 循环中保存可能许多不必要的迭代),然后以这种方式循环:

unique_all = list(set(all))
first_values = []
for t in unique_all:
    if t[0] in first_values:
        unique_all.remove(t)
    else:
        first_values.append(t[0])

print(unique_all)

输出将是:

[('Auckland', 23, 'https://en.wikipedia.org/wiki/Auckland_Airport'),
 ('South Island', 29, 'https://en.wikipedia.org/wiki/South_Island'),
 ('genera', 23, 'https://en.wikipedia.org/wiki/Genus'),
 ('Islands', 28, 'https://en.wikipedia.org dddfdfdf/wiki/')]

我想这就是你的问题所要求的。


推荐阅读