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