Member 12173667 Ответов: 2

Как я могу искать внутри словаря списков


Здравствуйте, я пытаюсь найти внутри словаря списков элементы списка-это словари

например, поиск слова внутри статей NY Times или The post или если это слово находится внутри статей обеих газет

кроме того, как я могу добавить элементы в определенный словарь (новостная газета)
news_papers ={ "NY Times": [

    {
        "id": 1, "language": "English", "edition": "first", "author": "MR Mike", "article":
        "New york post example"
    }
]

,

"the POST": [
    {"id": 1, "language": "English", "edition": "first", "author": "kyle", "article":
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit, ...etc"},

             {"id": 2, "language": "English", "edition": "first", "author": "MR Jake", "article":
                 "writing for New york"}
             ]
}



Предполагаемые результаты:

если я поищу слово "Нью-Йорк"

результат:

1-Ny times, артикул id:1

2-пост, артикул id:2

Что я уже пробовал:

это то, что я сделал, пытаясь добавить элемент в конкретную газету новостей
news_papers["NY Times"][{"id": 1, "language": "English", "edition": "first", "author": "MR Mike", "article":
            "New york post example"}]



Я получаю эту ошибку :TypeError: индексы списка должны быть целыми числами или срезами, а не диктом


что касается функциональности поиска, то я не знаю, с чего начать, есть ли какие-то предложения или идеи?

Gerry Schmitz

Почему вы используете Python, если "не знаете, с чего начать"? Почему бы тебе не сделать несколько уроков? Тогда ты все поймешь.

Member 12173667

Я программирую на python уже полтора года, чтобы предложения не доходили до смысла
Я имел в виду, что должен ли я использовать другой способ обойти это, мой друг сказал, что я должен преобразовать эти структурированные списки и словари в JSON и работать оттуда

извините за мой плохой английский :)

2 Ответов

Рейтинг:
1

Member 12173667

с помощью этого решения мне удалось получить одну статью, в которой появилась искомая строка

for key, value in news_papers.items():
    print(f'{ (key, value[0].get("id")) if "new york" in value[0].get("article").lower() else "" }')


Рейтинг:
1

Richard MacCutchan

Не пишите сложных утверждений с несколькими частями в них. Подумайте о структуре вашего корневого элемента news_papers Это словарь, и каждая запись содержит список словарей. Поэтому используйте переменные, чтобы сначала захватить каждый элемент, чтобы вы могли добраться до нужного вам элемента. Что-то вроде:

newspaper = news_papers["name of newspaper"]
article = newspaper[0] # this is the first element in the array
item = article["author"]
# etc.

Это позволит сделать код более удобным для чтения, и будет в значительной степени помочь при отладке.

[редактировать]
Исправлено неверное имя переменной.
[/редактировать]


Member 12173667

article = list[0] # это первый элемент в массиве
TypeError: объект 'type' не поддается подписке

Richard MacCutchan

Извините, смотрите обновленный код.