我已经定义了这样的结构。基本上是名称对
from collections import namedtuple
CP = namedtuple('Cell', ['attr', 'value'])
这适用于更大的有序结构,如下所示
_structure = [CP('id', None), CP('name', None)]
然后我得到一系列对应于_structure
results = [(1,'foo'),(2,"bar"),(3,"zaz")]
我如何map
以下内容:
final = [[CP('id', 1), CP('name', "foo")],
[CP('id', 2), CP('name', "bar")],
[CP('id', 3), CP('name', "zaz")],]
答案 0 :(得分:1)
我会使用列表理解:
final = [[CP('id', ident), CP('name', name)] for (ident,name) in results]
但你提到了map
,你也可以使用它:
final = map(lambda (ident,name): [CP('id',ident),CP('name',name)], results)
(请注意,我没有将id变量命名为id
,因为它与Python中的现有全局函数冲突。)
在Python中,理解/生成器通常比map
更受欢迎,因为它们更通用,可以说更清晰。诚然,map
中相对缺乏一般性主要是因为用于创建匿名函数的Python lambda
构造与更多函数式语言中可用的构造相比是相当有限的,其中map
和朋友统治至高无上。