Вы можете просто использовать фиксированное положение. 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;
}
Как насчет этого:
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))
Не в одну строку, но ...
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
Вы можете легко расширить его на большее количество словарей.
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]
Один лайнер (по запросу 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}