解析财务报表时无法解决字典更新值错误

我正在解析以下财务报表并尝试从中创建字典。但我不断收到此错误:ValueError: dictionary update sequence element #0 has length 1; 2 is required


以下是清理后的财务报表:


[[XXX XXX LTD.'],

 ['Statement of Loss and Retained Earnings'],

 ['For the Year Ended May', 'XX,', 'XXXX'],

 ['Unaudited - See Notice To Reader'],

 ['XXXX', 'XXXX'],

 ['REVENUE', 'XXX,XXX,XXX', 'XXX,XXX,XXX']

]

下面是我用来创建字典的代码:


蟒蛇 3.6

    for temp in cleaned_list:

        if len(temp) == 1:

            statement[temp[0]] = temp[0]

        elif len(temp) > 1:

            statement[temp[0]] = {}

            for temp_1 in temp[1:]:

                statement[temp[0]].update(temp_1)

如果列表的长度为 1,我想将该列表的条目同时设为其字典键和值。如果列表条目有多个项目,我想将第一个条目作为键,其余条目作为值。我不确定我遇到的错误是什么,以及它为什么会发生。您认为为什么会发生这种情况,我该如何解决?


守着星空守着你
浏览 224回答 2
2回答

慕村9548890

statement = {}    for temp in cleaned_list:    if len(temp) == 1:        statement[temp[0]] = temp[0]    elif len(temp) > 1:        if temp[0] in statement:            statement[temp[0]].extend(temp[1:])        else:            statement[temp[0]] = temp[1:] 说明(更新):statement.update()替换键中的值,同时您已经用 重新设置字典键对statement[temp[0]] = {}。因此,您似乎不想更新值而是附加列表项。我使用extend()这样您就没有包含列表项的值列表,例如'key': ['foo', 'bar', ['foo2', 'bar2']],而'key': ['foo', 'bar', 'foo2', 'bar2']在使用extend(). 另外,我添加了 if 语句来检查密钥是否已经存在。

蛊毒传说

如详述这里,该update()方法更新与来自字典对象或键/值对的一个迭代的对象的元素的字典。您收到一条错误消息,因为您试图在没有指定与 中的值关联的键的情况下更新字典temp_1。这应该可以解决问题:statement={}for temp in cleaned_list:    key=temp[0]    statement.update({key:None})    if len(temp)==1:        value=key        statement.update({key:value})    elif len(temp) > 1:        values=temp[1:]        statement.update({key:values})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python