Python 映射和 lambda 组合给出错误

Python map and lambda combination gives error

我正在尝试以下工作代码

from pyVmomi import vim
mapping = []
propertyDict = {'ipv4': '192.168.2.2/24'}
for k in propertyDict:
    v = propertyDict[k]
    mapping.append(vim.KeyValue(key=k, value=v))

使用 maplambda,如下所示

mapping.append(map(lambda k: vim.KeyValue(key=k,value=propertyDict[k]), propertyDict))

但出现错误 For "propertyMapping" 预期类型 vim.KeyValue,但得到列表 ,当我使用它在映射中的值在下面的函数

if mapping:
    spec_params = vim.OvfManager.CreateImportSpecParams(entityName=vmname,
                                                         propertyMapping=mapping)

map 函数 returns 具有多个值的迭代器,而不是单个值。

你应该替换:

mapping.append(map(lambda k: vim.KeyValue(key=k,value=propertyDict[k]), propertyDict))

作者:

mapping.extend(map(lambda k: vim.KeyValue(key=k,value=propertyDict[k]), propertyDict))

此外,map在python中很少使用。我们更喜欢列表理解。 我建议:

mapping.extend(vim.KeyValue(key=k, value=v) for k,v in propertyDict.items())