首页 > 解决方案 > 将列表转换为仅基于元组某些值的副本的集合

问题描述

一般来说,将列表转换为集合很简单,如下所示:

a = [1,2,3,1]
set_a = set(a)    # set([1, 2, 3])

现在,我想将一个元组列表转换为设置,只考虑元组的第一个值。

a = [(1,"a1"), (2,"b2"), (3, "c3"), (1, "d4")]
set_a = some_magic(a)

# 1) set_a = set([(1,"a1"), (2,"b2"), (3, "c3")]) or
# 2) set_a = set([(1, "d4"), (2,"b2"), (3, "c3")])
# Both (1) or (2) are acceptible outputs.

有没有我可以使用的“单行”技巧来代替some_magic上面提到的功能?

我想避免为簿记制作一个单独的列表,哪些元组的第一个索引已经使用[否则这将是显而易见的答案]

标签: pythonpython-3.xset

解决方案


试试这个:

set(dict(a).items())

dict(a)会将列表变成字典,其中键被每次出现覆盖

.items()每个键值对提取到dict_items元组列表中

set()它变成你想要的集合

注意:这将为您提供第二个示例,保留最后一个唯一的元组键。如果您想要第一个,则需要采用不同的方法


推荐阅读