from itertools import chain, groupby
from operator import itemgetter
dicts = [{'a': 's1'}, {'a': 's2'}, {'a': 's2', 'b': 's3'}]
union = {k: sorted(set(map(itemgetter(1), items))) for k, items in
groupby(sorted(chain.from_iterable(d.iteritems() for d in dicts)),
key=itemgetter(0))}
# union = {'a': ['s1', 's2'], 'b': ['s3']}
我不确定它有多简单,但是使用groupby和set这可能会更短(Python2.x示例):
相关问题 更多 >
编程相关推荐