1

空のネストされた辞書の大きなツリーを構築する必要があり、以下のコードが Pythonic であるかどうかを知りたいです。

dictionary_name = dict((year, dict((month, dict((day, []) for day in days))
                       for month in months)) for year in years)
  • これが悪い習慣である場合、上記のコードを書く最も Pythonic な方法は何ですか?
  • これが悪い習慣ではない場合、どこで改行を使用して、これを読みやすく「Pythonic」に保つ必要がありますか。また、ジェネレーターをネストした場合でも、ジェネレーターの速度の利点は存在しますか?

注:この質問は、リスト内包表記にも適用されます。この質問を複数の質問に分割する必要があると思われる場合はお知らせください。

4

4 に答える 4

5

を使用してもかまわない場合はdefaultdict

from collections import defaultdict
import itertools
dd = defaultdict( defaultdict )
for y, m, d in itertools.product( years, months, days ):
    dd[y][m][d] = []
于 2012-10-19T13:20:20.100 に答える
0

この表現は少し密度が高いという他のポスターにも同意しますが、別の方法で分割するのは良い考えかもしれませんが、密度の高いものを書く場合、少しインデントを調整することで大いに役立ちます。読みやすくする:

dictionary_name = dict(
    (year, dict((month, dict((day, [])
                             for day in days))
                for month in months))
    for year in years)
于 2012-10-19T13:52:03.793 に答える