Есть ли способ оценить литеральные символы Python как упорядоченные? - PullRequest
5 голосов
/ 21 марта 2012

Отказ от ответственности: Да, я понимаю, что то, что я предлагаю, является сумасшедшим, у меня есть очень особый (ab) вариант использования.

Внутри конкретного исполнителя я хочу, чтобы словарные литералы оценивались в упорядоченные словари, поэтому я могусохранить исходный порядок из кода exec'd.

Я пытался заменить __builtin __. dict до exec (очень тщательно его восстанавливать после), однако это не влияет на литералы dict, только сам вызов dict.

>>> import __builtin__
>>> __builtin__.dict = list
>>> exec "a={}"
>>> a
{}
>>> exec "a=dict()"
>>> a
[]

Очевидно, что есть модуль dis, но это ядро ​​сайта с орбитального подхода.

Есть ли какой-то другой способ, которым я могу подключиться к оценке литералов dict и изменить то, чтобывает?

PS для Python2.6

1 Ответ

1 голос
/ 21 марта 2012

Я бы посоветовал взглянуть на модуль ast , с помощью которого вы можете ast.parse данный код и заменить каждую запись ast.Dict соответствующим вызовом конструктора.

(Но, извините, кажется, вы хотите чего-то действительно странного.)

...