首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JSON list/object Python中搜索参数列表

在JSON list/object Python中搜索参数列表
EN

Stack Overflow用户
提问于 2020-12-21 01:17:55
回答 2查看 30关注 0票数 1

我正在使用下面的数据集,它使用SQL来查询数据。结果在JSON列表中,而不是对象中。我试着做切片,但不能让它在列表中工作。因此使用SQL查询(查询1)来过滤列。现在,我正在尝试获取一个参数列表,并在查询结果中对其进行搜索,以便将我的结果仅过滤到列表中的项目。例如my_list'60','61','62','63','66','67','68','69','70','71','72我希望结果显示只包含上述区域的5列。

代码语言:javascript
复制
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'}}]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-21 01:53:24

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

代码语言:javascript
复制
# 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)

返回

代码语言:javascript
复制
[{'precinct': '001', 'fine': 32}, {'precinct': '002', 'fine': 44}, {'precinct': '003', 'fine': 12}] 

如果是这样,那么您应该能够在for循环中过滤这些结果。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2020-12-21 01:28:09

代码语言:javascript
复制
#### make sure my_list is str '013' not a int 013 cause  '013' not equal to 013.
Query_1 = {'precinct': '013', 'violation': 'COMML PLATES-UNALTERED VEHICLE', 'fine_amount': '495', 'interest_amount': '349.72', 'issuing_agency': 'TRAFFIC'}

my_list = ['013','60', '61', '62', '63', '66', '67', '68', '69', '70', '71', '72']

if Query_1['precinct'] in my_list:
           print(Query_1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65382647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档