我想把两个混蛋合并成这样:
发自:
a1 = {u'2016-03-11': [u'20:00', u'22:10']}
a2 = {u'2016-03-11': [u'20:00', u'23:10'],u'2016-03-12': [u'20:00', u'22:10']}至:
an = {u'2016-03-11': [u'20:00',u'22:10', u'23:10'],u'2016-03-12': [u'20:00', u'22:10']}我需要一个函数合并两块
发布于 2016-03-16 08:57:27
from collections import defaultdict
a1 = {u'2016-03-11': [u'20:00', u'22:10']}
a2 = {u'2016-03-11': [u'20:00', u'23:10'],u'2016-03-12': [u'20:00', u'22:10']}
dd = defaultdict(set)
for d in a1, a2:
for k, v in d.items():
dd[k] |= set(v)
res = {k: sorted(v) for k, v in dd.items()}
print(res)
# {'2016-03-12': ['20:00', '22:10'], '2016-03-11': ['20:00', '22:10', '23:10']}发布于 2016-03-16 08:44:33
使用set、sorted将两个列表组合为一个列表并进行排序:
>>> a1 = {u'2016-03-11': [u'20:00', u'22:10']}
>>> a2 = {u'2016-03-11': [u'20:00', u'23:10'],u'2016-03-12': [u'20:00', u'22:10']}
>>> an = {}
>>> for d in a1, a2:
... for key in d:
... an[key] = sorted(set(an.get(key, []) + d[key]))
... # ^^ Merge two lists (dictionary values) into one, and sort
...
>>> print an
{u'2016-03-11': [u'20:00', u'22:10', u'23:10'],
u'2016-03-12': [u'20:00', u'22:10']}更新
使用字典理解的替代版本(假设只合并两个字典):
>>> {key: sorted(set(a1.get(key,[]) + a2.get(key,[]))) for key in set(a1)|set(a2)}
{u'2016-03-11': [u'20:00', u'22:10', u'23:10'],
u'2016-03-12': [u'20:00', u'22:10']}发布于 2016-03-16 08:50:46
a1 = {u'2016-03-11': [u'20:00', u'22:10']}
a2 = {u'2016-03-11': [u'20:00', u'23:10'],u'2016-03-12': [u'20:00', u'22:10']}
import copy
an = copy.deepcopy(a1)
for key, value in a2.iteritems():
if key in an:
an[key] = list(set(an[key] + a2[key]))
else:
an[key] = value
print an
>> {u'2016-03-11': [u'22:10', u'20:00', u'23:10'], u'2016-03-12': [u'20:00', u'22:10']}https://stackoverflow.com/questions/36030392
复制相似问题