Вложенное понимание словаря python
У меня возникли проблемы с пониманием вложенных понятий словаря в Python 3. Результат, который я получаю из приведенного ниже примера, выводит правильную структуру без ошибок, но включает только одну из внутренних пар ключ: значение. Я не нашел пример вложенного понимания слова как это; Googling "вложенное понимание словаря python" показывает устаревшие примеры, не вложенные решения или ответы, разрешенные с использованием другого подхода. Возможно, я использую неправильный синтаксис.
Пример:
data = {outer_k: {inner_k: myfunc(inner_v)} for outer_k, outer_v in outer_dict.items() for inner_k, inner_v in outer_v.items()}
В этом примере должен быть возвращен исходный словарь, но с внутренним значением, измененным myfunc
.
Структура словаря external_dict, а также результат:
{outer_k: {inner_k: inner_v, ...}, ...}
Ответы
Ответ 1
{inner_k: myfunc(inner_v)}
не является пониманием словаря. Это просто словарь.
Вероятно, вы ищете что-то вроде этого:
data = {outer_k: {inner_k: myfunc(inner_v) for inner_k, inner_v in outer_v.items()} for outer_k, outer_v in outer_dict.items()}
Для удобства чтения не слишком усложняйте понимание слова и понимание списков.
Ответ 2
Добавление некоторых разрывов строк и отступов:
data = {
outer_k: {inner_k: myfunc(inner_v)}
for outer_k, outer_v in outer_dict.items()
for inner_k, inner_v in outer_v.items()
}
... делает очевидным, что на самом деле у вас есть одно "двумерное" понимание. Вероятно, вы действительно хотите:
data = {
outer_k: {
inner_k: myfunc(inner_v)
for inner_k, inner_v in outer_v.items()
}
for outer_k, outer_v in outer_dict.items()
}
(это именно то, что Блендер предложил в своем ответе с добавленными пробелами).