在JSON列表/对象Python中搜索参数列表

在JSON列表/对象Python中搜索参数列表,python,json,Python,Json,我使用下面的数据集,它使用SQL查询数据。 结果在JSON列表中,而不是对象中。 我试着做切片,但无法在列表上工作。因此,使用SQL查询(查询1)来过滤列。 现在,我尝试获取一个参数列表,并在查询结果中搜索它,这样我的结果将仅过滤到列表中的项目。 示例my_列表['60','61','62','63','66','67','68','69','70','71','72] 我希望结果显示5列,仅包括上述选区。 任何hep都很感激,因为我被困了好几天 data_url='data.cityofnew

我使用下面的数据集,它使用SQL查询数据。 结果在JSON列表中,而不是对象中。 我试着做切片,但无法在列表上工作。因此,使用SQL查询(查询1)来过滤列。 现在,我尝试获取一个参数列表,并在查询结果中搜索它,这样我的结果将仅过滤到列表中的项目。 示例my_列表['60','61','62','63','66','67','68','69','70','71','72] 我希望结果显示5列,仅包括上述选区。 任何hep都很感激,因为我被困了好几天

data_url='data.cityofnewyork.us'  
data_set='nc67-uf89'      
url = Socrata(data_url) 
JSON_results = url.get(data_set, limit=100)
print(JSON_results)

Query1 = url.get(data_set, select="precinct, violation, fine_amount, interest_amount, issuing_agency" where= interest_amount>0",order="interest_amount DESC",  limit=10)
print(Query1)
#  this is the result of Query 1 {'precinct': '013', 'violation': 'COMML PLATES-UNALTERED VEHICLE', 'fine_amount': '495', 'interest_amount': '349.72', 'issuing_agency': 'TRAFFIC'}

if Query1['precinct']==mylist:
for i in Query1:
    print (i)

#Below is output for JSON_results

[{'plate': 'GDP4579', 'state': 'NY', 'license_type': 'PAS', 'summons_number': '5104469750', 'issue_date': '11/17/2018', 'violation_time': '11:37A', 'violation': 'FAILURE TO STOP AT RED LIGHT', 'fine_amount': '50', 'penalty_amount': '25', 'interest_amount': '0', 'reduction_amount': '0', 'payment_amount': '75', 'amount_due': '0', 'precinct': '000', 'county': 'BK', 'issuing_agency': 'DEPARTMENT OF TRANSPORTATION', 'summons_image': {'url': 'http://nycserv.nyc.gov/NYCServWeb/ShowImage?searchID=VGxSRmQwNUVVVEpQVkdNeFRVRTlQUT09&locationName=_____________________', 'description': 'View Summons'}}]

我不得不对
JSON_Results
的数据结构做一些假设,但希望这能让您走上正确的方向

# This is the structure I am assuming for json results
import json 
JSON_RESULTS = json.loads(
    '[{"precinct":"001","fine":32},{"precinct":"002","fine":44},{"precinct":"003","fine":12}]')
print(JSON_RESULTS)
返回

[{'precinct': '001', 'fine': 32}, {'precinct': '002', 'fine': 44}, {'precinct': '003', 'fine': 12}] 
如果是这样,那么您应该能够在for循环中过滤这些结果

my_list = ['60', '61', '62', '63', '66', '67', '68', '69', '70', '71', '72']
for jsonResult in JSON_RESULTS:
    if jsonResult['precinct'] in  my_list:
        print(f"{jsonResult['precinct']},{jsonResult['violation']},{jsonResult['fine_amount']},{jsonResult['interest_amount']},{jsonResult['issuing_agency']}")

*编辑:只需打印所需的列

我尝试过,但出现了一个错误,问题是查询1是一个词汇表[{…},{…}]。下面是我得到的错误。TypeError:列表索引必须是整数或切片,而不是strc。您可以发布
print(JSON_results)
的结果吗?我刚刚用结果编辑了它,哇……谢谢,它成功了。我太离谱了,而且我不得不把我的列表转换成字符串。我在这件事上被困了好几天。
my_list = ['60', '61', '62', '63', '66', '67', '68', '69', '70', '71', '72']
for jsonResult in JSON_RESULTS:
    if jsonResult['precinct'] in  my_list:
        print(f"{jsonResult['precinct']},{jsonResult['violation']},{jsonResult['fine_amount']},{jsonResult['interest_amount']},{jsonResult['issuing_agency']}")