0

假设一个字典列表,目标是遍历所有字典中的所有不同值。

例子:

d1={'a':1, 'c':3, 'e':5}
d2={'b':2, 'e':5, 'f':6}
l=[d1,d2]

迭代应该结束1,2,3,5,6,不管是集合还是列表。

4

6 回答 6

3

您可以使用set理解:

d1 = {'a':1, 'c':3, 'e':5}
d2 = {'b':2, 'e':5, 'f':6}
L = [d1, d2]

final = set(j for k in L for j in k.values())
# {1, 2, 3, 5, 6}
于 2018-07-12T10:28:30.847 回答
0

您可以使用set.union迭代不同的值:

res = set().union(*(i.values() for i in (d1, d2)))

# {1, 2, 3, 5, 6}
于 2018-07-12T10:26:50.233 回答
0

使用set

前任:

from itertools import chain
d1={'a':1, 'c':3, 'e':5}
d2={'b':2, 'e':5, 'f':6}
l=set(chain.from_iterable([d1.values(),d2.values()]))
print( l )

输出:

set([1, 2, 3, 5, 6])
  • chain.from_iterable展平列表
于 2018-07-12T10:27:29.173 回答
0

itertools.chain使用和生成器表达式的简单解决方案:

from itertools import chain

set(chain.from_iterable(d.values() for d in l))
于 2018-07-12T10:32:28.680 回答
0
print list(set().union(a, b))

非常直截了当

于 2018-07-12T10:32:50.387 回答
0
from functools import reduce
print(reduce(set.union, map(set, map(dict.values, l))))

这输出:

{1, 2, 3, 5, 6}
于 2018-07-12T10:39:28.020 回答