Поиск списка параметров в списке/объекте JSON Python

Я использую набор данных ниже, который использует SQL для запроса данных. Результаты находятся в списке JSON, а не в объекте. Я пытаюсь сделать нарезку, но не могу заставить это работать в списке. Поэтому вместо этого использовались SQL-запросы (Query 1) для фильтрации столбцов. Теперь я пытаюсь взять список параметров и найти его в результатах запроса, чтобы мои результаты отфильтровывались только по элементам в списке. Пример my_list['60', '61', '62', '63', '66', '67', '68', '69', '70', '71', '72] Я хочу, чтобы в результате отображались 5 столбцов, включая только указанные выше участки. Любая помощь ценится, потому что я застрял на несколько дней.

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

Можете опубликовать результаты print(JSON_results)?

David Kaftan 20.12.2020 18:42

Я только что отредактировал его с результатами,

dobian1 20.12.2020 18:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

#### 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)

Я пробовал это, но получаю сообщение об ошибке, проблема в том, что запрос 1 представляет собой список словарей [{....},{...}]. ниже ошибка, которую я получаю. TypeError: индексы списка должны быть целыми числами или срезами, а не str

dobian1 20.12.2020 18:37
Ответ принят как подходящий

Мне пришлось сделать некоторые предположения о структуре данных 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']}")

*редактировать: просто напечатайте нужные столбцы

Вау... Спасибо, сработало. Я был далеко, плюс мне пришлось преобразовать свой список в строки. Я застрял на этом несколько дней.

dobian1 20.12.2020 19:31

Другие вопросы по теме