В Python 2 можно сделать следующее:Python 3 карты методы словаря обновления списка других словарей
>> d = {'a':1}
>> extras = [{'b':2}, {'c':4}]
>> map(d.update, extras)
>> d['c']
>> 4
В Python 3 в получу KeyError
:
>> d = {'a':1}
>> extras = [{'b':2}, {'c':4}]
>> map(d.update, extras)
>> d['c']
>> KeyError: 'c'
Я хотел бы добиться такого же поведения в Python 3, как в Python 2.
Я понимаю, что карта в Python 3 вернет итератор (ленивая оценка и еще много чего), которая должна быть повторена для словаря t o быть обновленным.
Я предположил, что ключевой поиск d['c']
вызовет итерацию карты как-то, что не так.
Есть ли питонический способ достичь этого поведения, не записывая цикл for, , который я считаю подробным по сравнению с картой.
Я думал об использовании списковых:
>> d = {'a':1}
>> extras = [{'b':2}, {'c':4}]
>> [x for x in map(d.update, extras)]
>> d['c']
>> 4
Но это, кажется, не вещий.
'списка (карта (d.update, дополнительной))' заставят итератор потребляться – jonrsharpe
The вещего способом * это * использовать для цикла!Использование карты (или понимания списка) для ее побочных эффектов, а не ее результатов, определенно * не * pythonic. –