Найти - Пользователи
Полная версия: Метод get для вложенного словаря
Начало » Python для новичков » Метод get для вложенного словаря
1 2
mick_g
Спасибо. Вернуть что-либо вместо значения отсутствующего ключа не значит записать это значение в словарь.
mick_g
FishHook
Что тут непонятного то?

Вот такая вещь собирает частотную статистику вхождения слова в строку:
for i in string:
dic = dic.get(i, 0) + 1

Получается, методом get вполне можно добавлять в словарь значения для новых ключей. И если это так, тогда я не понимаю, почему не работает такая конструкция:

for name, thing, count in lst:
dic = dic.get(name, {}).get(thing, 0) + count
noob_saibot
mick_g
Получается, методом get вполне можно добавлять в словарь значения для новых ключей.
Неверный вывод.
PooH
Я конечно понимаю, что религия не позволяет, но если все таки заглянуть в документацию.
то можно увидеть три звездочки, пять звездочек, что 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.
marvellik
как то так можно
 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}}
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