Найти - Пользователи
Полная версия: setdefault
Начало » Python для экспертов » setdefault
1
offline
Что то не могу понять как работает такая конструкция

a = {}
a.setdefault("a", []).append(['1','2'])
print a
{'a': [['1', '2']]}
Вроде бы “a” является словарём, метода append у него быть не должно.. В доке написано a.setdefault(k) a if k in a, else x (also setting it)
Кто нибудь может прояснить эту магию?
bw
>>> help({}.setdefault)
Help on built-in function setdefault:

setdefault(...)
D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
Опытном путем, если документация не помогает, определи что возвращает setdefault, а потом скажи мне, почему ты решил, что этот метод возвращает словарь, а не значение по ключу ‘a’.

..bw
axe
a.setdefault(“a”, )
устанавливает a={“a”:}, т.е. обращение происходит к a и присваивает значение , т.к. такого ключа ещё не было.
и возвращает значение a =

список a= получает команду append
т.е. в список добавляется список.

итого: получаем то, что получили
offline
Всем спасибо, теперь понял.
axe
bw
>>> help({}.setdefault)
можно получить то же самое так:
{}.setdefault.__doc__
у меня req.write( str(help( {}.setdefault ))) выдаёт None, а req.write( {}.setdefault.__doc__) показывает документацию
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB