2017-02-01 6 views
-2

Предпочитаете список словарей (lst_of_dcts) в Python. Кроме того, предположим, что я хочу изменить (например, кодировать в ASCII) каждое значение v пар ключ-значение k:v в каждом из словарей dcts. Для этого я использую понимание списков, но строка кода становится довольно длинной и трудной для чтения.Упрощенный код для определения сложного списка в Python

import unidecode 
[{k: unidecode.unidecode(v.decode('utf-8')) for k, v in dct.items()} for dct in lst_of_dcts] 

Как бы вы разделили вышеупомянутое понимание списка на более короткие, легко читаемые строки? (Обратите внимание, что я не хочу просто переформатировать линии, например, с помощью обратной косой черты.)

+5

Вы называете этот комплекс? Я не. Я называю это pythonic. –

+3

измените импорт на 'from unidecode import unidecode', и кроме этого это нормально! – wim

+0

Вы можете использовать обычный 'for x in xs:', я думаю. – Gabriel

ответ

0

Обратите внимание, что я не хочу просто переформатировать линии, например, с помощью обратной косой черты.

Почему бы и нет? Это именно то, что я сделал бы, чтобы сделать его более читаемым. Правильно отступом, конечно, чтобы показать структуру:

[{k: unidecode.unidecode(v.decode('utf-8')) 
    for k, v in dct.items()} 
for dct in lst_of_dcts] 
+0

Справедливо достаточно. Вы меня убедили. –