一般情况下,将列表转换为集合很简单,如下所示:
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
函数?
我想避免制作一个单独的列表来记录哪些元组的第一个索引已经被使用 [否则这将是显而易见的答案]
最佳答案
试试这个:
set(dict(a).items())
dict(a)
会将列表变成一个字典,其中的键会被每次出现覆盖
.items()
将每个键值对提取到 dict_items
元组列表中
set()
把它变成你想要的集合
注意:这将为您提供第二个示例,保留最后一个唯一的元组键。如果您想要第一个,则需要采用不同的方法
关于python - 将列表转换为仅基于元组某些值的副本的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55452379/