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

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

оператор append не работает со словарями
Stright
Если во всех словарях одинаковые ключи, то так:
 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))
evp24
Romanromaa5999
присвоить скажем переменную неважно какую ключам или элементам словаря

Говорят, если присвоить “цвет” а к цвету “флаг клуба” то можно научить ИИ… ))
FishHook
evp24
Второе предупреждение за флуд
vic57
Romanromaa5999
есть ли оператор который совмещает их чтобы получить:
f={'Спартак': 2,3 ‘ЦСКА’: 2,5 ‘Зенит’: 1,2}
 >>> d  = {}
>>> d['key'] = []
>>> d['key'].append(1)
>>> d['key'].append(2)
>>> d
{'key': [1, 2]}
>>> 
py.user.next
  
>>> d = {}
>>> d['key'] = []
>>> d['key'].extend((1, 2))
>>> d
{'key': [1, 2]}
>>> d['key'].extend((3, 4))
>>> d
{'key': [1, 2, 3, 4]}
>>>
Rodegast
 >>> 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)}
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