更新:Python 3.7+可确保保留插入顺序的字典
我想使用.py文件,例如配置文件。因此,使用这种{...}表示法,我可以使用字符串作为键来创建字典,但是在标准的python字典中定义顺序会丢失。
{...}
我的问题:是否可以重写{...}表示法,以便我得到OrderedDict()而不是dict()?
OrderedDict()
dict()
我希望仅使用OrderedDict(dict = OrderedDict)覆盖dict构造函数即可,但事实并非如此。
dict = OrderedDict
例如:
dict = OrderedDict dictname = { 'B key': 'value1', 'A key': 'value2', 'C key': 'value3' } print dictname.items()
输出:
[('B key', 'value1'), ('A key', 'value2'), ('C key', 'value3')]
这几乎可以为您提供所需的语法:
class _OrderedDictMaker(object): def __getitem__(self, keys): if not isinstance(keys, tuple): keys = (keys,) assert all(isinstance(key, slice) for key in keys) return OrderedDict([(k.start, k.stop) for k in keys]) ordereddict = _OrderedDictMaker() from nastyhacks import ordereddict menu = ordereddict[ "about" : "about", "login" : "login", 'signup': "signup" ]
编辑: 有人独立发现了这一点,并odictliteral在PyPI上发布了该软件包,该软件包提供了更为彻底的实现- 改用该软件包
odictliteral