从python中获取一个列表

我是否在Python中以list[]forms获取set()的内容?

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

 >>> 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] 

当然,设置元素必须可以sorting才能工作。 你不能sorting复杂的数字(见gnibbler的评论)。 在Python 3中,你也不能sorting任何具有混合数据types的set([1, 2, 'string']) ,例如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] >>>