Проверка значений в словаре в формате JSON

#python #json #dictionary

#python #json #словарь

Вопрос:

Я пытаюсь проверить, находится ли данная строка («Sample1») в поле «текст» этого словаря. Что я делаю не так?

 var = {'data': [{'text': 'Sample1',
                  'descriptionMoreURL': 'https://sample1.com',
                  'description': 'this is sample1',
                  'type': 'text'},
                 {'text': 'Sample2',
                  'descriptionMoreURL': 'https://sample2.com',
                  'description': 'this is sample2',
                  'type': 'text'}
                 ]}

print('Sample1' in var['data'])
  

Например, в этом коде я бы хотел, чтобы результат был True. Аналогично, если строка «Sample1» была заменена на «Sample2», она также вернет True .

Комментарии:

1. Вы заметили, что text это никогда не появляется в вашем коде?

Ответ №1:

Ваша проверка на один уровень выше, чем необходимо. 'Sample1' не существует как ключ в var['data'] , но существует в нижних вложенных словарях.

Вы можете использовать any() здесь, чтобы проверить, 'Sample1' существует ли в каждом словаре 'text' значение:

 >>> any(d['text'] == 'Sample1' for d in var['data'] for k in d)
True
>> any(d['text'] == 'Sample2' for d in var['data'] for k in d)
True
  

Комментарии:

1. Обратите внимание, что при этом проверяются все ключи вложенных словарей, а не только text поле.

Ответ №2:

print(‘Sample1’ в var[‘data’]) проверяет вашу строку в последовательности dict [{}, {}, {}]

попробуйте что-нибудь, что :

 for el in var['data']:
   print('Sample1' in el.values())