在python中创建一个defaultdict列表

时间:2011-03-14 20:49:05

标签: python

我正在做以下事情:

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'对象不是   标化的

这里有什么问题?

3 个答案:

答案 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初始化为空列表([]),它会起作用。