Python 如何搜索json文件以返回满足特定条件的值?

Python 如何搜索json文件以返回满足特定条件的值?,python,json,python-3.x,anaconda,Python,Json,Python 3.x,Anaconda,这是我的json文件: {"items":[{"reputation":6623,"user_id":836,"location":"Durham, United Kingdom","link":"https://datascience.stackexchange.com/users/836/neil-slater","display_name":"Neil Slater"},{"reputation":6267,"user_id":381,"location":"Silicon Valley"

这是我的json文件:

{"items":[{"reputation":6623,"user_id":836,"location":"Durham, United Kingdom","link":"https://datascience.stackexchange.com/users/836/neil-slater","display_name":"Neil Slater"},{"reputation":6267,"user_id":381,"location":"Silicon Valley","link":"https://datascience.stackexchange.com/users/381/emre","display_name":"Emre"},{"reputation":5033,"user_id":2452,"location":"Atlanta, GA","link":"https://datascience.stackexchange.com/users/2452/aleksandr-blekh","display_name":"Aleksandr Blekh"},{"reputation":3537,"user_id":11097,"location":"Gurgaon, India","link":"https://datascience.stackexchange.com/users/11097/dawny33","display_name":"Dawny33"},{"reputation":3257,"user_id":21,"location":"London, United Kingdom","link":"https://datascience.stackexchange.com/users/21/sean-owen","display_name":"Sean Owen"}]

如何提取来自特定位置(例如以色列)的用户的显示名称?我正在尝试为相同的对象编写嵌套查询,但出现语法错误。

我认为您正在使用这种方法:

import json

fp = open('myfile.json', 'r')
data = json.load(fp)

for user in data['items']:
    if user['location'] == 'Israel':
        print (user['display_name'])
   data = {"items":[{"reputation":6623,"user_id":836,"location":"Durham, United Kingdom","link":"https://datascience.stackexchange.com/users/836/neil-slater","display_name":"Neil Slater"},{"reputation":6267,"user_id":381,"location":"Silicon Valley","link":"https://datascience.stackexchange.com/users/381/emre","display_name":"Emre"},{"reputation":5033,"user_id":2452,"location":"Atlanta, GA","link":"https://datascience.stackexchange.com/users/2452/aleksandr-blekh","display_name":"Aleksandr Blekh"},{"reputation":3537,"user_id":11097,"location":"Gurgaon, India","link":"https://datascience.stackexchange.com/users/11097/dawny33","display_name":"Dawny33"},{"reputation":3257,"user_id":21,"location":"London, United Kingdom","link":"https://datascience.stackexchange.com/users/21/sean-owen","display_name":"Sean Owen"}]}


    for key,value in data.items():
             for i in range(len(value)):
                     if 'United Kingdom' in value[i]['location']:
                             print value[i]['display_name']
输出:

Neil Slater
Sean Owen
示例代码:

import json

location = 'United Kingdom'
jso = '''{"items":[{"reputation":6623,"user_id":836,"location":"Durham, United Kingdom","link":"https://datascience.stackexchange.com/users/836/neil-slater","display_name":"Neil Slater"},{"reputation":6267,"user_id":381,"location":"Silicon Valley","link":"https://datascience.stackexchange.com/users/381/emre","display_name":"Emre"},{"reputation":5033,"user_id":2452,"location":"Atlanta, GA","link":"https://datascience.stackexchange.com/users/2452/aleksandr-blekh","display_name":"Aleksandr Blekh"},{"reputation":3537,"user_id":11097,"location":"Gurgaon, India","link":"https://datascience.stackexchange.com/users/11097/dawny33","display_name":"Dawny33"},{"reputation":3257,"user_id":21,"location":"London, United Kingdom","link":"https://datascience.stackexchange.com/users/21/sean-owen","display_name":"Sean Owen"}]}'''

dic = json.loads(jso)

for entry in dic['items']:
    if location.lower() in entry['location'].lower():
        print (entry['display_name'])
输出:

Neil Slater
Sean Owen

您可以使用如下列表:

import json
jsd = json.loads(<JSON STRING>) #  This return a dict object
displayNamesList = [dn['display_name'] for dn in jsd.values()[0] if 'Israel' in dn['display_name']]
导入json
jsd=json.loads()#这将返回一个dict对象
displayNamesList=[dn['display_name']表示jsd中的dn。如果dn['display_name']]中的'Israel',则值为[0]
但最重要的是,您需要检查格式良好的json结构。我使用它来验证json结构


希望这对您有所帮助。

这是一个有点宽泛的问题。请在问题中包括您从中获得语法错误的代码。嵌套查询是什么意思?我想他指的是一个多级字典。我得到的错误是:在()1中为data4['items']中的用户进行KeyError回溯(最近一次调用):--->2如果用户['location']=='Israel':3打印(用户['display_name'])键错误:“location”如果将
打印(用户)
作为循环中的第一行,您会看到什么?