我正在测试以下功能:
def getDataMapOfFirstLine(line):
datamap = {}
for item in line:
hierarchy = item.split('^')
partialmap = datamap
i=0
for node in hierarchy:
partialmap = partialmap.setdefault(node, i)
i += 1
return datamap
它应该从csv文件的第一行创建一个字典,如下所示:
^{pr2}$如您所见,每个分号分隔的字符串中的扬抑符类似于SQL中的连接。如果我执行它,就会出现以下错误:
Traceback (most recent call last):
File "./importtool.py", line 173, in <module>
main()
File "./importtool.py", line 38, in main
analyseImportFile(importfile, parser, options)
File "./importtool.py", line 119, in analyseImportFile
datamap = getDataMapOfFirstLine(line)
File "./importtool.py", line 149, in getDataMapOfFirstLine
partialmap = partialmap.setdefault(node, i)
AttributeError: 'int' object has no attribute 'setdefault'
如果我用{}替换setdefault函数中的I,则不会出错:
{'bverb': {'namebspr': {}, 'konum': {}, 'bank': {'iident': {}}}, 'such': {}, 'ans': {}}
这几乎就是我想要的,但是我想要的不是{}列号。在
我只是不明白什么是错的。我在互动模式下尝试过:
>>> mydict = {'foo': "Hallo", 'bar': 5}
>>> mydict.setdefault("sth", 12)
12
>>> print mydict
{'sth': 12, 'foo': 'Hallo', 'bar': 5}
如你所见,这是有效的。。。在
我很感激你的帮助。提前谢谢!在
你的问题是这条线:
^{pr2}$dict.setdefault
返回设置的内容(或已经设置的内容)。在本例中,它是一个整数,所以您将partialmap
设置为int
。您可能无法获取返回值(这是您在交互式终端BTW中所做的):相关问题 更多 >
编程相关推荐