我正在做以下事情:
recordList=[lambda:defaultdict(str)]
record=defaultdict(str)
record['value']='value1'
record['value2']='value2'
recordList.append(record)
for record in recordList:
params = (record['value'],record['value2'],'31')
我收到错误:
TypeError:'function'对象不是 标化的
这里有什么问题?
答案 0 :(得分:3)
recordList=[lambda:defaultdict(str)]
创建一个包含返回defaultdict(str)
的函数的列表。所以它基本上等同于:
def xy ():
return defaultdict(str)
recordList = []
recordList.append( xy )
因此,当你启动for循环时,你会得到列表中的第一个元素,它不是一个列表(就像你推送它的所有其他元素一样),而是一个函数。函数没有索引访问方法(['value']
东西)。
答案 1 :(得分:2)
recordList是一个包含1个元素的列表,它是一个函数。
如果用
替换第一行recordList = []
剩下的就好了。
答案 2 :(得分:1)
你要向recordList
添加一个lambda,它是'function'类型。在for ..
循环中,您尝试下标(record['value']
,record['value2']
等)
将recordList
初始化为空列表([]
),它会起作用。