Подтвердить что ты не робот

Метод обновления в словаре Python

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

product.update(map(key, value))

product.update(key, value)

В чем разница между ними?

4b9b3361

Ответ 1

Разница в том, что второй метод не работает:

>>> {}.update(1, 2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: update expected at most 1 arguments, got 2

dict.update() ожидает найти итерацию пар ключ-значение, аргументы ключевого слова или другой словарь:

Обновите словарь с помощью пар ключ/значение из другого, перезаписывая существующие ключи. Верните None.

update() принимает либо другой объект словаря, либо итерабельность пар ключ/значение (в виде кортежей или других итераций длины два). Если указаны аргументы ключевого слова, словарь затем обновляется этими парами ключ/значение: d.update(red=1, blue=2).

map() - это встроенный метод, который создает последовательность, применяя элементы второго (и последующих) аргументов к первому аргументу, который должен быть вызываемым. Если ваш объект key не является вызываемым, а объект value является последовательностью, ваш первый метод также не работает.

Демонстрация рабочего приложения map():

>>> def key(v):
...     return (v, v)
... 
>>> value = range(3)
>>> map(key, value)
[(0, 0), (1, 1), (2, 2)]
>>> product = {}
>>> product.update(map(key, value))
>>> product
{0: 0, 1: 1, 2: 2}

Здесь map() просто генерирует пары ключ-значение, которые удовлетворяют ожиданиям dict.update().