如何在从php返回结果到python时避免typeerror

2024-10-03 15:30:05 发布

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

我在php和python中有以下代码,我将$result从php返回给python处理程序并运行到下面的错误中..我应该如何在python中返回以避免遇到此错误

php

  $result = [
        "TRIGGER_STATUS" => "SUCCESS",
        "PW_LINK" => "https://pw.company.com/"
];

Python

    orderedResults = sorted(result['result'].items(), key=lambda kv: kv[1]['Order'])

错误:-

  File "\\data\workspace\username\pwp4plugin\UI.py", line 269, i
n <lambda>
    orderedResults = sorted(result['result'].items(), key=lambda kv: kv[1]['Orde
r'])
TypeError: string indices must be integers, not str

Tags: lambdakey代码处理程序status错误itemsresult
1条回答
网友
1楼 · 发布于 2024-10-03 15:30:05

问题是kv[1]['Order']被传递给lambda函数被传递给key。假设Python在执行json.decode()之后拥有的dict是:

>>> result = {'result': {
...                      "TRIGGER_STATUS": "SUCCESS",
...                      "PW_LINK": "https://pw.company.com/"
...                      }
...           }
>>>
>>> # this is what .items() looks like:
... result['result'].items()
[('PW_LINK', 'https://pw.company.com/'), ('TRIGGER_STATUS', 'SUCCESS')]

因此在循环中,索引1是'https://pw.company.com/''SUCCESS'

>>> for kv in result['result'].items():
...   print kv[1]
...
https://pw.company.com/
SUCCESS
  1. 因此kv[1]['Order']正试图针对两个字符串中的每一个查找名为“Order”的。然而,Python期望的是每个字符串中的某个内容的整数索引。例如:

    >>> for kv in result['result'].items():
    ...   print kv[1][4]  # the fifth letter in each string
    ...
    s
    E
    
  2. 在您给出的PHP关联数组中,没有'Order'。所以我们不清楚你想用什么。一旦PHP结果被解析,Python中的result是什么

相关问题 更多 >