如何使用Python在Json数组中搜索特定值

2024-06-02 05:14:15 发布

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

我在用一个网站的API来获取信息。它输出100个值。

在这个数组中搜索特定值的最佳实践是什么?

数组如下所示:

{
  "success":true,
  "data":
  {
    "array":
    [
      {
        "id":"1","name":"Value1"
      },
      {
        "id":"2","name":"Value2"
      }
    ]
  }
}

我尝试使用在其他地方找到的此片段搜索数据,但它不起作用:

for name in (r.json()['data']['array'][0]['name']):
    if r.json()['data']['array'][0] == s_name:
    ident = r.json()['data']['array'][0]['id']
    name = r.json()['data']['array'][0]['name']
    print (name + ' - ' + ident)
else:
    print ('Nothing was found.')

所以,如果我试图引用Value1,我将如何使用Python来实现这一点?

请注意:我是一个新手,第一次使用Json,对Python不是很有经验。

非常感谢大家的帮助。


Tags: nameapiidjsontruedata网站数组
3条回答

你的代码可以简化很多:

# no need to call `r.json` so many times, can simply save it to a variable
json_data = r.json()
for item in json_data["data"]["array"]:
    if item["name"] == "Value1":
        # do something...

下面是一个用于搜索的单行示例:

aaa = {
  "success":True,
  "data":
  {
    "array":
    [
      {
        "id":"1","name":"Value1"
      },
      {
        "id":"2","name":"Value2"
      }
    ]
  }
}

[a['name'] for a in aaa['data']['array'] if a['id']=='1']

这将返回所有找到的案例,如果没有找到,则返回空数组

不知道那段代码是从哪里来的,但看起来很不对。

只要看看结构,你就可以做如下事情:

for attrs in r.json()['data']['array']:
    if attrs['name'] == s_name:
        ident = attrs['id']
        name = attrs['name']
        print(name + ' - ' + ident)
        break
else:
    print('Nothing found!')

相关问题 更多 >