gpt4 book ai didi

python - 覆盖 {...} 符号所以我得到 OrderedDict() 而不是 dict()?

转载 作者:IT老高 更新时间:2023-10-28 21:33:48 27 4
gpt4 key购买 nike

Update: dicts retaining insertion order is guaranteed for Python 3.7+

我想使用 .py 文件,例如配置文件。因此,使用 {...} 表示法,我可以使用字符串作为键创建字典,但定义顺序在标准 python 字典中丢失。

我的问题:是否可以覆盖 {...} 符号以便我得到 OrderedDict() 而不是 dict()

我希望简单地用 OrderedDict (dict = OrderedDict) 覆盖 dict 构造函数,但它没有。

例如:

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 上的包,它提供了更彻底的实现 - 改用该包

关于python - 覆盖 {...} 符号所以我得到 OrderedDict() 而不是 dict()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7878933/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com