如何在Python中将set()
的内容以list[]
形式获取?
我需要这样做是因为我需要在Google App Engine中保存集合,而实体属性类型可以是列表,但不能是集合。我知道我可以遍历整个集合,但似乎应该有一种捷径或“最佳实践”方法来解决该问题。
如何在Python中将set()
的内容以list[]
形式获取?
我需要这样做是因为我需要在Google App Engine中保存集合,而实体属性类型可以是列表,但不能是集合。我知道我可以遍历整个集合,但似乎应该有一种捷径或“最佳实践”方法来解决该问题。
查看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)
,但在这些情况下可能不值得麻烦。
s=set((1+1j,2+2j,3+3j))
。 - John La Rooy>>> s = set([1, 2, 3])
>>> list(s)
[1, 2, 3]
注意,你得到的列表没有定义的顺序。list
可以接受一个可迭代的参数来填充列表。因此,由于set
是可迭代的,所以它产生了期望的效果。 - Chris Morgan>>> a = [1, 2, 3, 4, 2, 3]
>>> b = set(a)
>>> b
set([1, 2, 3, 4])
>>> c = list(b)
>>> c
[1, 2, 3, 4]
>>>