Не удалось назначить dict с ключом типа int для EasyDict - PullRequest
0 голосов
/ 31 января 2020

Я использую EasyDict и хочу назначить dict с ключом типа int для него

from easydict import EasyDict as edict
cfg = edict()
cfg.tt = {'0': 'aeroplane'}  # this is ok
cfg.tt = {0: 'aeroplane'}  # this raises error, but this is what I want to use!

Как мне поступить, если я хочу присвоить dict, который я хочу, спасибо

1 Ответ

3 голосов
/ 31 января 2020

Это потому, что EasyDict преобразует любое значение dict в EasyDict. И сделать атрибут из ключей. int значения не могут быть атрибутами, поэтому это не сработает. Вы можете установить PermissiveDict, что аналогично EasyDict, но не пытается преобразовать значения в его собственный тип.

pip install permissive-dict

Ваш пример:

from permissive_dict import PermissiveDict
cfg = PermissiveDict()
cfg.tt = {'0': 'aeroplane'}  # this is ok
cfg.tt = {0: 'aeroplane'}  # this does not raise errors, but this is what I want to use!

cfg.tt[0]) == cfg.TT[0] == cfg.tT[0] == cfg.Tt[0] == 'aeroplane'
...