#python #json
Вопрос:
jsonA =
[ {'id': 'xxx1', 'serial': 'BPCE-RNHC-25G8', 'model': 'AlertTrace', 'subject': 'EMP004'},
{'id': 'xxx2', 'serial': 'XX-WWW-2XSFC', 'model': 'AlertTrace', 'subject': 'EMP005'},
{'id': 'xxx3', 'serial': 'VVV-ASD-CDSG', 'model': 'AlertTrace', 'subject': ''} ]
У меня есть 3 json-данных, и я хочу получить данные, которые subject
не являются нулевыми. Далее, я должен иметь возможность фильтровать результат, который имеет только два ключа, которые являются serial
и subject
.
Ожидаемый результат:
jsonA =
[ {'serial': 'BPCE-RNHC-25G8', 'subject': 'EMP004'},
{'serial': 'XX-WWW-2XSFC', 'subject': 'EMP005'} ]
Я пробовал с этим кодом: (но вывод показывает мне только тему. Мне нужны оба значения из serial и subject)
Filter = [{'serial': dct['serial']} and {'subject': dct['subject']} for dct in jsonA if (dct['subject']) != None]
Ответ №1:
Вы можете попробовать использовать следующий пример кода:
a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
for key, value in a_dict.items():
print(key, '->', value)
В вашем коде вы можете попробовать что-то вроде:
for key, value in jsonA.items():
if value != None:
возвращаемый ключ
Но я не совсем уверен 🙂
Ответ №2:
Просто делай:
res = [{'serial': dct['serial'], 'subject': dct['subject']} for dct in jsonA if dct['subject']]
print(res)
Вывод
[{'serial': 'BPCE-RNHC-25G8', 'subject': 'EMP004'}, {'serial': 'XX-WWW-2XSFC', 'subject': 'EMP005'}]
В Python значение истинности None
и ""
равно False
, поэтому вы можете использовать dct['subject']
его непосредственно в условных выражениях. Для создания словарей обратитесь к документации.
Комментарии:
1. О, это значит, что мне нужно использовать
,
вместоand
?2. @WEIZHUANGGOH В данном конкретном случае построения словаря да, есть другие способы, но это лучший
3. Хорошо, спасибо, что поправили меня, я отмечу это как ответ через 11 минут.