Python - 元组 - 在元组列表中获取唯一元素

3

更新:

我选择了这个方案:

set(item[1] for item in id) 

谢谢大家,你们的想法帮助了我。


我正在使用元组列表进行工作:

以以下代码为例。我的列表可以是任意长度。然而,我将总是寻找元组中给定索引的值:

id = [(9,'Tup','Check'),(10,'Tup','Pyton'),(11,'Not Tup','Stack'),(12,'Not Tup','Stack')]

在这种情况下,我希望获取唯一的第二个元素。
objective_ouput = ('Tup','Not Tup')

1
你到目前为止尝试了什么?在哪里卡住了?请注意,SO不是一个代码编写服务。 - Pedro von Hertwig Batista
尝试使用列表推导式获取您想要的元素列表,然后查看如何使用集合。 - Galen
好的,谢谢,我会告诉你们的。 - ruh
2
如果您认为问题已经得到完全回答,请标记问题为已解决(在响应旁边的复选标记)。 - James
3个回答

6

以下就是简单的步骤:

objective_ouput_set = {item[1] for item in id}

2
使用了这个:set(item[1] for item in id) - 谢谢大家,你们的想法很有帮助。 - ruh
@ruh 根据你的选择进行调整 ;) - Dhia
@StefanPochmann 发生在 list() vs []dict() vs {} 上,不太清楚为什么。这里 - Jose A. García
@StefanPochmann 你是对的,我希望这个能够满足你的要求。但我的观点是,“常量”(与列表推导无关)初始化在字面上比函数方式快得多。如果你想要性能,这会降低可读性。 - Jose A. García
你想要多少个0呢?嗯,我不知道如何在set()之外创建一个空集,因为{}会给出一个字典。处理参数需要时间吗?查找和调用是否会有4.5倍的差异? - Jose A. García
显示剩余2条评论

1

你可以使用列表推导式。

tup = ()
tuple([t[1] for t in your_list_of_tuples if t[1] not in tup])

顺便提一下,id不是一个好的变量名,因为它是一个内置函数。


1

通过将元组压缩在一起,您可以获得每个索引处的一系列元组。将其与set()结合使用以消除重复项,然后;

[set(tup) for tup in zip(*id))]

将生成一个包含每个索引处唯一元素的列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接