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))
使用 map 和 lambda,如下所示
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())
我正在尝试以下工作代码
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))
使用 map 和 lambda,如下所示
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())