有没有办法将python dict文本作为有序dict进行计算?

有没有办法将python dict文本作为有序dict进行计算?,python,parsing,eval,python-2.6,Python,Parsing,Eval,Python 2.6,免责声明:是的,我意识到我的建议是疯狂的,我有一个非常特殊的(ab)用例 在特定的exec中,我希望字典文本计算为有序字典,这样我就可以保留exec代码的原始顺序 我尝试在exec之前替换_builtin__; dict.dict(在执行之后非常小心地恢复它),但是这不会影响dict文本,只影响dict调用本身 >>> import __builtin__ >>> __builtin__.dict = list >>> exec "a={}"

免责声明:是的,我意识到我的建议是疯狂的,我有一个非常特殊的(ab)用例

在特定的exec中,我希望字典文本计算为有序字典,这样我就可以保留exec代码的原始顺序

我尝试在exec之前替换_builtin__; dict.dict(在执行之后非常小心地恢复它),但是这不会影响dict文本,只影响dict调用本身

>>> import __builtin__
>>> __builtin__.dict = list
>>> exec "a={}"
>>> a
{}
>>> exec "a=dict()"
>>> a
[]
显然有dis模块,但那是从轨道进入现场的核武器

我是否可以用其他方法来评估dict文字,并改变会发生什么


另外,对于Python2.6,我建议您查看一下该模块,使用该模块,您可以
ast.parse
给定代码,并用相应的构造函数调用替换每个
ast.Dict
条目


(但是,对不起,你似乎想要一些非常奇怪的东西。)

我想你必须用源代码中的
dict(这里是元组)
替换dict文本,因为dict文本是语法,所以如果不解释为dict,就不是Python。我忘了ast,这可能比dis更好,虽然肯定属于同一类别。好吧,让我们来说明原因:您需要更改程序的行为(无论它是Python还是其他)。您可以在源代码级别进行更改,也可以在编译后进行更改,或者修补执行环境<代码>{}不受环境的影响(除非修补解释器)。因此,您要么修补字节码,要么修补源代码(更健壮、可移植且易于调试)。