从python中的集合中获取列表

Chr*_*row 54 python list set

何我在Python set()中获取list[]表单的内容?

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

Pet*_*rin 66

请参阅Sven的答案,但我会使用该sorted()函数:这样您就可以以一个很好的可预测顺序获取元素(例如,您可以比较之后的列表).

>>> s = set([1, 2, 3, 4, 5])
>>> sorted(s)
[1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

当然,必须对set元素进行排序才能使其工作.您无法对复数进行排序(请参阅gnibbler的评论).在Python 3中,您也无法对具有混合数据类型的任何集合进行排序,例如set([1, 2, 'string']).

您可以使用sorted(s, key=str),但在这些情况下可能不值得.

  • 排除"以防万一"的东西并不是一个好主意.排序的效率低于调用列表,但更重要的是 - 如果集合的元素不可排序,该怎么办?例如`s = set((1 + 1j,2 + 2j,3 + 3j))` (11认同)

Sve*_*ach 64

>>> s = set([1, 2, 3])
>>> list(s)
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

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

  • 对此的解释:`list`接受一个可迭代的参数,该参数将用于填充列表.因此`set`是可迭代的,它会产生所需的效果. (22认同)