谁能给我解释一下原因:设置列出转换
p = {-1,2,-3}
print(p)
将打印
{2, -3, -1}
,当我转换列出
pa = list(p)
print(pa)
我会得到
[2, -3, -1]
我如何转换p来的列表,包括项目
[-1, 2, -3]
PS相同的顺序:当我使用负项
谁能给我解释一下原因:设置列出转换
p = {-1,2,-3}
print(p)
将打印
{2, -3, -1}
,当我转换列出
pa = list(p)
print(pa)
我会得到
[2, -3, -1]
我如何转换p来的列表,包括项目
[-1, 2, -3]
PS相同的顺序:当我使用负项
set
在Python是无序的,这种情况只。如果您想维护元素的顺序,请改为使用collections.OrderedDict.fromkeys()
。这也将表现为set
。例如:
>>> import collections
>>> p = collections.OrderedDict.fromkeys([-1,2,-3])
>>> print(p)
OrderedDict([(-1, None), (2, None), (-3, None)])
>>> p = collections.OrderedDict.fromkeys([-1,2,-3,2]) # <-- 2 repeated twice
>>> print(p) # <-- Removed duplicated entry of '2', same as set
OrderedDict([(-1, None), (2, None), (-3, None)])
>>> l = list(p)
>>> print(l) # <-- order is maintained
[-1, 2, -3]
对不起,但它不起作用,因为fromkeys不会将参数集作为参数 –
您需要将初始化'set'代码替换为'collections.OrderedDict.fromkeys()'。一旦创建了该集合,就无法从中提取原始订单。 –
我必须找到另一种方式。不过谢谢你。 –
套件未订购。总之,除非您存储订单,否则您无法保存订单... –
看似奇怪的事情发生在这个小整数周围,因为它们散列到自己的值,所以经常(但不是总是)按照排序顺序保存。但你不应该依赖字典或设置顺序。 – jonrsharpe
感谢您的及时回复。我已经知道这些集合是不可变的。但我没有选择。我从一个方法中获得一个集合。我必须将其转换为列表(同时保持相同的顺序),以便将其提供给另一种方法。任何帮助! –