Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 13, 2017 11:26:02

mick_g
Зарегистрирован: 2017-02-13
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Метод get для вложенного словаря

Спасибо. Вернуть что-либо вместо значения отсутствующего ключа не значит записать это значение в словарь.

Офлайн

#2 Фев. 13, 2017 14:18:04

mick_g
Зарегистрирован: 2017-02-13
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Метод get для вложенного словаря

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

Отредактировано mick_g (Фев. 13, 2017 14:20:57)

Офлайн

#3 Фев. 13, 2017 14:47:41

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Метод get для вложенного словаря

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

Офлайн

#4 Фев. 13, 2017 17:15:15

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Метод 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.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Май 3, 2018 19:58:58

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Метод get для вложенного словаря

как то так можно

 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}}

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version