如何在 Python 中获取
set()
形式的 list[]
的内容?
我需要这样做,因为我需要将集合保存在 Google App Engine 中,并且实体属性类型可以是列表,但不能是集合。我知道我可以迭代整个事情,但似乎应该有一个捷径或“最佳实践”方法来做到这一点。
>>> s = set([1, 2, 3])
>>> list(s)
[1, 2, 3]
请注意,您获得的列表没有定义的顺序。
参见 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)
,但在这些情况下可能不值得这么麻烦。
>>> a = [1, 2, 3, 4, 2, 3]
>>> b = set(a)
>>> b
set([1, 2, 3, 4])
>>> c = list(b)
>>> c
[1, 2, 3, 4]
>>>