假设我有一个词典列表。每个字典具有相同的键,但每个键可能具有不同的值。如何获取按字母顺序排序的唯一值列表?假设每个值都是一个字符串。
有没有比循环遍历每个字典更好的方法,将每个值添加到列表中,对列表进行排序,然后删除非唯一值?
答案 0 :(得分:4)
我不确定它有多简单,但是使用 groupby 和 set 这可以更短(python 2.x示例):
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']}