【发布时间】:2014-12-01 16:46:21
【问题描述】:
from collections import OrderedDict
import pprint
menu = {"about" : "about", "login" : "login", 'signup': "signup"}
menu = OrderedDict(menu)
pprint.pprint(menu.items())
import sys
sys.exit()
输出是:
[('about', 'about'), ('signup', 'signup'), ('login', 'login')]
因此,即使使用OrderedDict,订单也不会保留。我知道字典默认情况下不会保留初始顺序以及所有这些内容。但我想了解为什么OrderedDict 不起作用。
【问题讨论】:
-
这是一个重要的陷阱(错误地首先分配给 dict 然后是 OrderedDict),我们中的许多人独立发现并摸不着头脑......这个问题是完全合法的,记录了一个重要的陷阱,不应该已被否决。 非常违反直觉,OrderedDict 必须从元组列表中初始化/分配,而不是从字典中,以保持正确的顺序:)
标签: python dictionary ordereddictionary