有效地使用python映射

2024-06-11 23:02:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我定义了这样的结构。基本上是名值对

from collections import namedtuple
CP = namedtuple('Cell', ['attr', 'value'])

这符合一个更大的有序结构,看起来像这样

_structure = [CP('id', None), CP('name', None)]

然后我得到一系列的结果,它们对应于_structure的三个实例

results = [(1,'foo'),(2,"bar"),(3,"zaz")]

如何将这些转换为以下内容:

final = [[CP('id', 1), CP('name', "foo")],
         [CP('id', 2), CP('name', "bar")],
         [CP('id', 3), CP('name', "zaz")],]

Tags: namefromimportnoneid定义foobar
1条回答
网友
1楼 · 发布于 2024-06-11 23:02:16

我会用一个列表来理解:

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和friends占主导地位相比相当有限。你知道吗

相关问题 更多 >