首页 > 解决方案 > 从元组的元组中消除重复值

问题描述

我想使用循环一一检索如下结果:

result=((1, 'name1', 'Noah'),(1, 'name2', 'Liam'),(2, 'name3', 'Mason'),(3, 'name5', 'Mason'))

tupe = ((1, 'name1', 'Noah'),(1, 'name2', 'Liam'),(2, 'name3', 'Mason'),(2, 'name4', 'Mason'),(3, 'name5', 'Mason'))

这是我尝试过的代码,但它没有给出预期的输出:

for rowx in tupe:
     for rowy in tupe:
          if rowx[0] == rowy[0]:
               if rowx[2] != rowy[2]:
                   print(rowx)

标签: pythontuples

解决方案


您可以使用字典理解来消除基于索引 0 和 2 的重复项:

tupe = ((1, 'name1', 'Noah'),
        (1, 'name2', 'Liam'),
        (2, 'name3', 'Mason'),
        (2, 'name4', 'Mason'),
        (3, 'name5', 'Mason'))

print(tuple({(x[0], x[2]): x for x in tupe[::-1]}.values())[::-1])

输出:

((1, 'name1', 'Noah'), (1, 'name2', 'Liam'), (2, 'name3', 'Mason'), (3, 'name5', 'Mason'))

在重复的情况下,我颠倒了在结构中优先考虑元素的元组,但是如果您不介意选择哪些重复项或想要优先考虑最后一个项目,则可以跳过此组件;这是额外的工作。


推荐阅读