我在閱讀@Martijn Pieters對Converting dict to OrderedDict的回覆。他的回答的主要觀點是,傳遞OrderedDict()
的正則字典將不會保留所需的順序,因爲您傳遞的字典已經「失去」任何秩序的外表。他的解決方案是傳遞構成字典鍵/值對的元組。將OrictDict傳遞給OrderedDict會出現什麼問題?
但是,我也注意到了docs如下:
改變在3.6版本:接受PEP 468,順序 保留傳遞到OrderedDict
關鍵字參數這是否使Martijn指出的問題無效(您現在可以通過OrderedDict傳遞一個詞典)還是我誤解了?
from collections import OrderedDict
ship = {'NAME': 'Albatross',
'HP':50,
'BLASTERS':13,
'THRUSTERS':18,
'PRICE':250}
print(ship) # order lost as expected
{'BLASTERS': 13, 'HP': 50, 'NAME': 'Albatross', 'PRICE': 250, 'THRUSTERS': 18}
print(OrderedDict(ship)) # order preserved even though a dict is passed?
OrderedDict([('NAME', 'Albatross'),
('HP', 50),
('BLASTERS', 13),
('THRUSTERS', 18),
('PRICE', 250)])
我得到這個相同的(正確的)命令,如果我運行一個for key in ...
環比OrderedDict爲好,似乎在暗示這是確定要通過字典本身。
編輯:這也促成了一下我的困惑:Are dictionaries ordered in Python 3.6+?
爲**關鍵字參數保留的訂單**傳遞給OrderedDict。不知道你從哪裏得到你的想法。 –