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

时间:2016-06-30 06:17:45

标签: python json

我正在使用网站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没有经验。

非常感谢所有帮助。

3 个答案:

答案 0 :(得分:4)

您的代码可以简化很多:

import random  
import time  
b=time.time()  
a=list()  
c=list()   
n=random.randint(2,12)  
#appending random numbers in a list 'a'
g=1  
while(g<=n): 
   a.append(random.randint(0,10))  
   g=g+1  
print(a)  
print("Total elements in the list= %s"%len(a))  
#Appending Done
for i in range(2,n):
    for j in range (2,n):               
       if a[i]*a[j]>0:
           if a[i]!=a[j]:  
               m=a[i]*a[j]  
               c.append(m)   
           else:  
               continue  
      else:  
           continue  
print(max(c))  
time=time.time()-b  
print("%s"%(time.time()-b))  

答案 1 :(得分:4)

不确定那段代码来自哪里,但看起来非常错误。

只需查看结构,您就可以执行以下操作:

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!')

答案 2 :(得分:1)

这里是一个单线搜索示例:

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']

这将返回所有找到的病例,如果找不到任何内容,将返回一个空数组