Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 31, 2017 21:14:50

Romanromaa5999
Зарегистрирован: 2017-07-22
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

как присвоить больше одного значения ключу в словаре?

Добрый день!
у меня такая задача:
есть некий словарь d:={'Спартак': 2, ‘ЦСКА’: 2, ‘Зенит’: 2}
При помощи какого оператора я могу присвоить скажем переменную неважно какую ключам или элементам словаря?

и ещё проще будет если я могу совместить два словаря, т.е. например у меня два словаря:
d:={'Спартак': 2, ‘ЦСКА’: 2, ‘Зенит’: 2}
e:={'Спартак': 3, ‘ЦСКА’: 5, ‘Зенит’: 1}
есть ли оператор который совмещает их чтобы получить:
f={'Спартак': 2,3 ‘ЦСКА’: 2,5 ‘Зенит’: 1,2}

оператор append не работает со словарями

Офлайн

#2 Авг. 31, 2017 23:04:34

Stright
От: Кострома
Зарегистрирован: 2015-01-20
Сообщения: 139
Репутация: +  16  -
Профиль   Отправить e-mail  

как присвоить больше одного значения ключу в словаре?

Если во всех словарях одинаковые ключи, то так:

 from collections import defaultdict
d = {'Спартак': 2, 'ЦСКА': 2, 'Зенит': 2}
e = {'Спартак': 3, 'ЦСКА': 5, 'Зенит': 1}
out = defaultdict(list)
for key in d.keys():
    out[key].extend([dct[key] for dct in (d, e)])
print(dict(out))
Если ключи могут быть разные, то так:
 from collections import defaultdict
from operator import truth
d = {'Спартак': 2, 'ЦСКА': 2, 'Зенит': 2, 'Динамо': 2}
e = {'Спартак': 3, 'ЦСКА': 5, 'Зенит': 1}
keys = {*d, *e}
out = defaultdict(list)
for key in keys:
    values = list(filter(truth, (dct.get(key) for dct in (d, e))))
    out[key].extend(values)
print(dict(out))

Отредактировано Stright (Авг. 31, 2017 23:16:19)

Офлайн

#3 Сен. 1, 2017 07:28:01

evp24
Зарегистрирован: 2017-05-03
Сообщения: 96
Репутация: +  3  -
Профиль   Отправить e-mail  

как присвоить больше одного значения ключу в словаре?

Romanromaa5999
присвоить скажем переменную неважно какую ключам или элементам словаря

Говорят, если присвоить “цвет” а к цвету “флаг клуба” то можно научить ИИ… ))

Офлайн

#4 Сен. 1, 2017 07:50:59

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как присвоить больше одного значения ключу в словаре?

evp24
Второе предупреждение за флуд



Офлайн

#5 Сен. 1, 2017 10:58:20

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

как присвоить больше одного значения ключу в словаре?

Romanromaa5999
есть ли оператор который совмещает их чтобы получить:
f={'Спартак': 2,3 ‘ЦСКА’: 2,5 ‘Зенит’: 1,2}
 >>> d  = {}
>>> d['key'] = []
>>> d['key'].append(1)
>>> d['key'].append(2)
>>> d
{'key': [1, 2]}
>>> 

Офлайн

#6 Сен. 1, 2017 13:52:01

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10012
Репутация: +  857  -
Профиль   Отправить e-mail  

как присвоить больше одного значения ключу в словаре?

  
>>> d = {}
>>> d['key'] = []
>>> d['key'].extend((1, 2))
>>> d
{'key': [1, 2]}
>>> d['key'].extend((3, 4))
>>> d
{'key': [1, 2, 3, 4]}
>>>



Офлайн

#7 Сен. 3, 2017 17:32:58

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2840
Репутация: +  186  -
Профиль   Отправить e-mail  

как присвоить больше одного значения ключу в словаре?

 >>> d = {u"Спартак": 2, u"ЦСКА": 2, u"Зенит": 2}
>>> e = {u"Спартак": 3, u"ЦСКА": 5, u"Зенит": 1}
>>> { k:(x,y) for k, x in d.items() for K, y in e.items() if K == k }
{u'Зенит': (2, 1), u'Спартак': (2, 3), u'ЦСКА': (2, 5)}



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version