Форум сайта python.su
0
Добрый день!
у меня такая задача:
есть некий словарь d:={'Спартак': 2, ‘ЦСКА’: 2, ‘Зенит’: 2}
При помощи какого оператора я могу присвоить скажем переменную неважно какую ключам или элементам словаря?
и ещё проще будет если я могу совместить два словаря, т.е. например у меня два словаря:
d:={'Спартак': 2, ‘ЦСКА’: 2, ‘Зенит’: 2}
e:={'Спартак': 3, ‘ЦСКА’: 5, ‘Зенит’: 1}
есть ли оператор который совмещает их чтобы получить:
f={'Спартак': 2,3 ‘ЦСКА’: 2,5 ‘Зенит’: 1,2}
оператор append не работает со словарями
Офлайн
16
Если во всех словарях одинаковые ключи, то так:
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
Romanromaa5999
присвоить скажем переменную неважно какую ключам или элементам словаря
Офлайн
568
evp24
Второе предупреждение за флуд
Офлайн
Romanromaa5999
есть ли оператор который совмещает их чтобы получить:
f={'Спартак': 2,3 ‘ЦСКА’: 2,5 ‘Зенит’: 1,2}
>>> d = {} >>> d['key'] = [] >>> d['key'].append(1) >>> d['key'].append(2) >>> d {'key': [1, 2]} >>>
Офлайн
857
>>> d = {} >>> d['key'] = [] >>> d['key'].extend((1, 2)) >>> d {'key': [1, 2]} >>> d['key'].extend((3, 4)) >>> d {'key': [1, 2, 3, 4]} >>>
Офлайн
186
>>> 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)}
Офлайн