setdefault和Integers的问题

2024-09-30 01:19:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在测试以下功能:

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}

如你所见,这是有效的。。。在

我很感激你的帮助。提前谢谢!在


Tags: inpynodeforhierarchymainlineitem

热门问题