首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python map()字典值

Python map()字典值
EN

Stack Overflow用户
提问于 2012-05-22 04:54:36
回答 2查看 42.3K关注 0票数 8

我正在尝试对字典上的values()函数返回的dict_values对象使用map()。但是,我似乎无法通过dict_values执行map()操作

代码语言:javascript
运行
复制
map(print, h.values())
Out[31]: <builtins.map at 0x1ce1290>

我相信有一种简单的方法可以做到这一点。我实际上想做的是在Counters的字典中创建一个包含所有Counter键的set(),如下所示:

代码语言:javascript
运行
复制
# counters is a dict with Counters as values
whole_set = set()
map(lambda x: whole_set.update(set(x)), counters.values())

在Python中有没有更好的方法来做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-22 05:03:43

在Python3中,map返回迭代器,而不是列表。您仍然需要遍历它,或者显式地对它调用list,或者将它放入for循环。但是无论如何你都不应该以这种方式使用mapmap实际上是用于将返回值收集到可迭代或序列中。因为printset.update都不返回值,所以在这种情况下使用map不是惯用的做法。

您的目标是将counters中所有计数器中的所有键放入一个集合中。一种方法是使用嵌套的生成器表达式:

代码语言:javascript
运行
复制
s = set(key for counter in counters.values() for key in counter)

还有可爱的字典理解语法,它在Python2.7和更高版本中可用(感谢Lattyware!)并且可以生成集合和字典:

代码语言:javascript
运行
复制
s = {key for counter in counters.values() for key in counter}

它们都大致相当于以下内容:

代码语言:javascript
运行
复制
s = set()
for counter in counters.values():
    for key in counter:
        s.add(key)
票数 18
EN

Stack Overflow用户

发布于 2014-03-25 04:32:16

您想要counters的所有值的集合并集吗?也就是说,

代码语言:javascript
运行
复制
counters[1].union(counters[2]).union(...).union(counters[n])

?那只是functools.reduce

代码语言:javascript
运行
复制
import functools

s = functools.reduce(set.union, counters.values())

如果counters.values()还不是集合(例如,如果它们是列表),那么您应该首先将它们转换为集合。您可以使用使用iteritemsdict comprehension来完成此操作,这有点笨拙:

代码语言:javascript
运行
复制
>>> 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()

代码语言:javascript
运行
复制
>>> 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])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10692482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档