инициализировать субдиктативность субдиктивного понимания - PullRequest
0 голосов
/ 24 апреля 2019

Я инициализирую словарь около 100 ключей; Некоторые ключи инициализируются как поддикты с использованием словарных пониманий; В частности, один ключ имеет восемь поддиктов в качестве значений, один из которых является аномальным по отношению к другим семи, и я хотел бы получить рекомендации относительно наилучшего способа справиться с этим.

Это один ключ и как я его инициализирую:

d = {...,
     ...,
    "activity": {
        k: {int(v): 0 for v in range(0, 24)}
        for k in (
            "rts_all",
            "rts_thirty_days",
            "years",
            "seven_days",
            "thirty_days",
            "ninety_days",
            "all",
        )
        },
        ...,
}

Но для ключа "активность" также нужен еще один ключ с поддиктом в качестве значения:

"weekdays" = {
    k: 0 for k in ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
}

В данный момент я инициализирую весь остальной словарь и, наконец, делаю следующее:

d["activity"]["weekdays"] = {
    k: 0 for k in ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
}

Это работает нормально, и достаточно понятно, но также мне кажется ad hoc .

Есть ли более аккуратный механизм? Я что-то упускаю ужасно очевидное? Я слишком много думаю?

1 Ответ

0 голосов
/ 24 апреля 2019

Одна оптимизация использует dict.fromkeys , которая создаст dict со всеми значениями 0

dct = dict.fromkeys(["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], 0)
print(dct)
#{'Mon': 0, 'Tue': 0, 'Wed': 0, 'Thu': 0, 'Fri': 0, 'Sat': 0, 'Sun': 0}
d['activity'].update({'weekdays':dct})

Другое изменение заключается в использовании dict.update для обновления вашего словаря

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...