从元组的元组中消除重复值

时间:2018-09-28 20:36:33

标签: tuples

我想使用循环(一个接一个地)检索如下所示的结果

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)

1 个答案:

答案 0 :(得分:0)

您可以使用字典理解来消除基于索引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'))

在重复的情况下,我反转了元组,该元组在结构中优先考虑元素的优先顺序,但是如果您不介意选择哪个重复项或希望对最后一个项目优先的话,可以跳过此组件。这是额外的工作。

Try it out