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