如何从集合中获取列表?

问题描述 投票:0回答:3

如何在 Python 中获取

set()
形式的
list[]
的内容?

我需要这样做,因为我需要将集合保存在 Google App Engine 中,并且实体属性类型可以是列表,但不能是集合。我知道我可以迭代整个事情,但似乎应该有一个捷径或“最佳实践”方法来做到这一点。

python list set
3个回答
79
投票
>>> s = set([1, 2, 3])
>>> list(s)
[1, 2, 3]

请注意,您获得的列表没有定义的顺序。


79
投票

参见 Sven 的答案,但我会使用 sorted() 函数来代替:这样你就可以以良好的可预测顺序获得元素(例如,这样你就可以在之后比较列表)。

>>> s = set([1, 2, 3, 4, 5])
>>> sorted(s)
[1, 2, 3, 4, 5]

当然,集合元素必须是可排序的才能起作用。您无法对复数进行排序(请参阅 gnibbler 的评论)。 在 Python 3 中,您也无法对任何具有混合数据类型的集合进行排序,例如

set([1, 2, 'string'])

您可以使用

sorted(s, key=str)
,但在这些情况下可能不值得这么麻烦。


2
投票
>>> a = [1, 2, 3, 4, 2, 3]
>>> b = set(a)
>>> b
set([1, 2, 3, 4])
>>> c = list(b)
>>> c
[1, 2, 3, 4]
>>> 
© www.soinside.com 2019 - 2024. All rights reserved.