“Добавление” словарей в Python? [дубликат]

Вы можете просто использовать фиксированное положение. http://jsfiddle.net/Nrs2u/1/

#header {
    position: fixed;
    z-index: 2;
    left: 0%;
    top: 0%;
    width: 100%;
    height: 10%;
    background-color: purple;
}
#side {
    position: fixed;
    z-index: 2;
    left: 0%;
    top: 10%;
    width: 10%;
    height: 90%;
    background-color: red;
}
#body {
    position: absolute;
    left: 10%;
    top: 10%;
    width: 90%;
    height: 300%;
    background-color: orange;
}

30
задан Community 23 May 2017 в 12:16
поделиться

4 ответа

Как насчет этого:

dict( [ (n, a.get(n, 0)+b.get(n, 0)) for n in set(a)|set(b) ] )

Или без создания промежуточного списка (достаточно генератора):

dict( (n, a.get(n, 0)+b.get(n, 0)) for n in set(a)|set(b) )

Постскриптум:

Если комментатор обратился правильно, есть способ реализовать это проще с новым (из Py2.7) классом collections.Counter. Насколько я помню, эта версия не была доступна, когда я написал ответ:

from collections import Counter
dict(Counter(a)+Counter(b))
51
ответ дан 27 November 2019 в 23:14
поделиться

Не в одну строку, но ...

import itertools
import collections
a = dict()
a['cat'] = 1
a['fish'] = 10
a['aardvark'] = 1000
b = dict()
b['cat'] = 2
b['dog'] = 200
b['aardvark'] = 2000
c = collections.defaultdict(int)
for k, v in itertools.chain(a.iteritems(), b.iteritems()):
    c[k] += v

Вы можете легко расширить его на большее количество словарей.

15
ответ дан 27 November 2019 в 23:14
поделиться

result in a:

for elem in b:
    a[elem] = a.get(elem, 0) + b[elem]

result in c:

c = dict(a)
for elem in b:
    c[elem] = a.get(elem, 0) + b[elem]
15
ответ дан 27 November 2019 в 23:14
поделиться

Один лайнер (по запросу sortof): получить списки ключей, добавить их, отбросить дубликаты, перебрать результат с пониманием списка, вернуть пары (ключ, значение) для суммы, если ключ находится в оба dicts, или только отдельные значения, если нет. Оберните в dict.

>>> dict([(x,a[x]+b[x]) if (x in a and x in b) else (x,a[x]) if (x in a) else (x,b[x]) for x in set(a.keys()+b.keys())])
{'aardvark': 3000, 'fish': 10, 'dog': 200, 'cat': 3}
4
ответ дан 27 November 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: