json 字典对象接收AttributeError:“list”对象没有属性“get”

euoag5mw  于 2023-02-26  发布在  其他
关注(0)|答案(1)|浏览(116)

我正在尝试从这个列表中包含的字典中提取一个键-值对。这个列表是一组行,其中包含第三方应用程序中支付的行级信息。

[{'Amount': 45.0,'LinkedTxn': [{'TxnId': '129', 'TxnType': 'Invoice'}]}]

这个列表是一组行,其中包含第三方应用程序中支付的行级信息。

lines = payment.get("Line")
for line in lines:
    link = line.get("LinkedTxn")[0]
    if link.get("TxnType") == "Invoice":
        line_no += 1
        invoice = line.get("LinkedTxn").get("TxnType")
        amount = line.get("Amount")

我的期望是能够得到line('Amount')LinkedTxn.TxnTypeLinkedTxn.TxnId的值,然后将其保存到一个数组中以供以后使用。
相反,我可以很好地得到字典本身,但是当我试图拉取LinkedTxn的值时,我得到了以下错误:

Traceback (most recent call last):
  File "/Users/Archangel16179/Development/business/main.py", line 142, in <module>
    payments = qb.get_payments("2021-01-01")
  File "/Users/Archangel16179/Development/business/app/services/service.py", line 143, in get_payments
    link = line.get("LinkedTxn")[0]
AttributeError: 'list' object has no attribute 'get'

当我在最后一行之前放置断点时,我可以调用amount = line.get('Amount')而不会出现问题,然后写出amount以接收正确的值。另外,我用whatis line进行了检查,它如预期的那样作为字典返回。

(Pdb) link = line.get("LinkedTxn")[0]
(Pdb) pp link
{'TxnId': '129', 'TxnType': 'Invoice'}
(Pdb) whatis line
<class 'dict'>
(Pdb) whatis link
<class 'dict'>

我也试过在LinkedTxn中的一行中获取列表,然后在下一行中获取第一个值,但结果没有改变。

cclgggtu

cclgggtu1#

payment = {"Line": [{'Amount': 45.0, 'LinkedTxn': [{'TxnId': '129', 'TxnType': 'Invoice'}]}]}
lines = payment.get("Line")
line_no = 0
for line in lines:
    if line['LinkedTxn'][0]['TxnType'] == "Invoice":
        line_no += 1
        invoice = line['LinkedTxn'][0]['TxnType']
        amount = line['Amount']
print(line_no)

你应该试试这个

相关问题