我正在尝试对字典上的values()函数返回的dict_values对象使用map()。但是,我似乎无法通过dict_values执行map()操作
map(print, h.values())
Out[31]: <builtins.map at 0x1ce1290>我相信有一种简单的方法可以做到这一点。我实际上想做的是在Counters的字典中创建一个包含所有Counter键的set(),如下所示:
# counters is a dict with Counters as values
whole_set = set()
map(lambda x: whole_set.update(set(x)), counters.values())在Python中有没有更好的方法来做到这一点?
发布于 2014-03-25 04:32:16
您想要counters的所有值的集合并集吗?也就是说,
counters[1].union(counters[2]).union(...).union(counters[n])?那只是functools.reduce
import functools
s = functools.reduce(set.union, counters.values())如果counters.values()还不是集合(例如,如果它们是列表),那么您应该首先将它们转换为集合。您可以使用使用iteritems的dict comprehension来完成此操作,这有点笨拙:
>>> counters = {1:[1,2,3], 2:[4], 3:[5,6]}
>>> counters = {k:set(v) for (k,v) in counters.iteritems()}
>>> print counters
{1: set([1, 2, 3]), 2: set([4]), 3: set([5, 6])}当然,您也可以内联完成,因为您不关心counters.keys()
>>> counters = {1:[1,2,3], 2:[4], 3:[5,6]}
>>> functools.reduce(set.union, [set(v) for v in counters.values()])
set([1, 2, 3, 4, 5, 6])https://stackoverflow.com/questions/10692482
复制相似问题