如何从python中的字典列表中对值进行唯一和排序?

时间:2017-12-14 14:24:23

标签: python list sorting dictionary

假设我有一个词典列表。每个字典具有相同的键,但每个键可能具有不同的值。如何获取按字母顺序排序的唯一值列表?假设每个值都是一个字符串。

有没有比循环遍历每个字典更好的方法,将每个值添加到列表中,对列表进行排序,然后删除非唯一值?

1 个答案:

答案 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']}