Создание вложенного словаря для понимания года и месяца в python - PullRequest
0 голосов
/ 04 февраля 2020

Я хотел бы создать вложенный словарь с пониманием dict, но получаю синтаксическую ошибку.

years = [2016, 2017, 2018, 2019]
months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

my_Dict = {i:{j: for j in months}, for i in years}

Я не уверен, как объявить это вложенное понимание dict без получения синтаксической ошибки.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Внесены некоторые незначительные изменения в приведенный выше код, и это работает

key_years = {2016, 2017, 2018, 2019}
key_months = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

myDict = {i:{j for j in key_months} for i in key_years}
print (myDict)

Вывод: {2016: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 , 12}, 2017: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, 2018: {1, 2, 3, 4, 5, 6, 7, 8 , 9, 10, 11, 12}, 2019: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}}

0 голосов
/ 04 февраля 2020

В этом случае правильным способом было бы использовать словарь с пониманием вложенного списка, потому что если вы используете вложенный словарь, он заменит старые значения. В этом случае правильный синтаксис будет такой:

years = [2016, 2017, 2018, 2019]
months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

my_Dict = {
    year: [month for month in months] for year in years
}
print(my_Dict)

>>> {2016: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 
     2017: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 
     2018: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 
     2019: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]}
...