誰能給我解釋一下原因:設置列出轉換
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
感謝您的及時回覆。我已經知道這些集合是不可變的。但我沒有選擇。我從一個方法中獲得一個集合。我必須將其轉換爲列表(同時保持相同的順序),以便將其提供給另一種方法。任何幫助! –