Оператор Flask If — Диапазон для индекса списка

#python #if-statement #flask #range

Вопрос:

customer_data.json (загружается как customer_data)

 {
  "customers": [
    {
      "username": "anonymous",
      "id": "1234",
      "password": "12341234",
      "email": "1234@gmail.com",
      "status": false,
      "books": [
        "Things Fall Apart",
        "Fairy Tales",
        "Divine Comedy"
      ]
    }
  ]
}
 

Пример сообщения в файле new_catalog.json. (загружается в виде сообщений)

 {
  "books": [
    {
      "author": "Chinua Achebe",
      "country": "Nigeria",
      "language": "English",
      "link": "https://en.wikipedia.org/wiki/Things_Fall_Apartn",
      "pages": 209,
      "title": "Things Fall Apart",
      "year": 1958,
      "hold": false
    }
}
 

Необходимый код в Flask_practice.py

     for customer in customer_data['customers']:
        if len(customer['books']) > 0:
            for book in customer['books']:
                holds.append(book)
    
    for post in posts['books']:
        if post['title'] == holds[range(len(holds))]:
            matching_posts['books'].append(post)
 

holds[range(len(holds))] не работает.

Я пытаюсь просмотреть каждую из книг в holds разделе использование holds[0], holds[1] etc и проверить title , соответствует ли она названию книги new_catalog.json .

Я все еще новичок в колбе, переполнении стека и кодировании в целом, поэтому может быть действительно простое решение этой проблемы.

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

1. Что вы ожидали сделать holds[range(len(holds))] ? holds предположительно, это список, а списки могут быть проиндексированы только целыми числами, но range(len(holds)) не являются целым числом, поэтому код завершается ошибкой.

2. Я понимаю, что это не работает, но я пытался просмотреть каждый из элементов в трюмах с помощью holds[1], holds[2] etc и сравнить его с post['title']

3. if any(post["title"] == h for h in holds):

Ответ №1:

Я пытаюсь просмотреть каждую из holds используемых книг holds[0] и т. holds[1] Д. И проверить , соответствует ли название названию книги

Переведено почти буквально на Python:

 # For each post...
for post in posts['books']:
    # ...go through each of the books in `holds`...
    for hold in holds:
        # ...and see if the title is equal to a book title
        if post['title'] == hold:
            matching_posts['books'].append(post)
 

Или, если вы не хотите, чтобы append(post) для каждого элемента в holds :

 for post in posts['books']:
    if post['title'] in holds:
        matching_posts['books'].append(post)