为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

守着星空守着你 2021-09-11 20:04:57
我正在解析以下财务报表并尝试从中创建字典。但我不断收到此错误: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,我想将该列表的条目同时设为其字典键和值。如果列表条目有多个项目,我想将第一个条目作为键,其余条目作为值。我不确定我遇到的错误是什么,以及它为什么会发生。您认为为什么会发生这种情况,我该如何解决?
查看完整描述

2 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

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 语句来检查密钥是否已经存在。



查看完整回答
反对 回复 2021-09-11
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

如详述这里,该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})


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 248 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信