遍历字典列表中所有不同的字典值
Iterate through all distinct dictionary values in a list of dictionaries
假设有一个字典列表,目标是遍历所有字典中的所有不同值。
示例:
d1={'a':1, 'c':3, 'e':5}
d2={'b':2, 'e':5, 'f':6}
l=[d1,d2]
迭代应该结束1,2,3,5,6
,不管是集合还是列表。
您可以使用 set.union
迭代 distinct 个值:
res = set().union(*(i.values() for i in (d1, d2)))
# {1, 2, 3, 5, 6}
使用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
展平列表
你可以用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}
使用 itertools.chain
和生成器表达式的简单解决方案:
from itertools import chain
set(chain.from_iterable(d.values() for d in l))
print list(set().union(a, b))
非常直接
from functools import reduce
print(reduce(set.union, map(set, map(dict.values, l))))
这输出:
{1, 2, 3, 5, 6}
假设有一个字典列表,目标是遍历所有字典中的所有不同值。
示例:
d1={'a':1, 'c':3, 'e':5}
d2={'b':2, 'e':5, 'f':6}
l=[d1,d2]
迭代应该结束1,2,3,5,6
,不管是集合还是列表。
您可以使用 set.union
迭代 distinct 个值:
res = set().union(*(i.values() for i in (d1, d2)))
# {1, 2, 3, 5, 6}
使用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
展平列表
你可以用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}
使用 itertools.chain
和生成器表达式的简单解决方案:
from itertools import chain
set(chain.from_iterable(d.values() for d in l))
print list(set().union(a, b))
非常直接
from functools import reduce
print(reduce(set.union, map(set, map(dict.values, l))))
这输出:
{1, 2, 3, 5, 6}