Форум сайта python.su
Спасибо. Вернуть что-либо вместо значения отсутствующего ключа не значит записать это значение в словарь.
Офлайн
FishHook
Что тут непонятного то?
Отредактировано mick_g (Фев. 13, 2017 14:20:57)
Офлайн
mick_gНеверный вывод.
Получается, методом get вполне можно добавлять в словарь значения для новых ключей.
Офлайн
Я конечно понимаю, что религия не позволяет, но если все таки заглянуть в документацию.
то можно увидеть три звездочки, пять звездочек, что get ничего не устанавливает
Return the value for key if key is in the dictionary, else default. If default is not given, it defaults to None, so that this method never raises a KeyError.а устанавливает метод setdefault
If key is in the dictionary, return its value. If not, insert key with a value of default and return default. default defaults to None.
Офлайн
как то так можно
lst = [['Ваня', 'мороженое', 2], ['Петя', 'ручка', 5], ['Ваня', 'карандаш', 3], ['Ваня', 'мороженое', 1], ['Петя', 'конверт', 20], ['Ваня', 'конверт', 5]] dic = {} def d(x,key,val): x[key] = x.get(key,0)+val return x for i in lst: key,val = i[1:] dic[i[0]] = d(dic.get(i[0], {}),key,val) print(dic)
{'Ваня': {'мороженое': 3, 'карандаш': 3, 'конверт': 5}, 'Петя': {'ручка': 5, 'конверт': 20}}
Офлайн