Я пытаюсь исключить и удалить некоторые словари из списка. Я некоторое время искал по сайту и не нашел ничего конкретного для этого. Список словарей был создан из текстового файла, расположенного: http://s000.tinyupload.com/?file_id=48953557772434487729
Я пытаюсь разобраться и исключить то, что мне не нужно. Я думал, что мой синтаксис был правильным, но, видимо, нет.
Я включил только необходимый код, чтобы сократить беспорядок. У меня проблемы в точке action_genre, исключаю и удаляю там словари. При появлении запроса введите «s», а затем «a» для доступа к этим двум меню.
def load_movies():
global movies_list
movies_list= []
file_ref = open("movies.txt", 'r')
line = file_ref.readline()
for line in file_ref:
line = line.strip()
current = {}
if line == '':
break
movie_data = line.split("\t")
current["title"] = movie_data[0]
current["year"] = movie_data[1]
current["length"] = movie_data[2]
current["rating"] = movie_data[3]
current["action"] = int(movie_data[4][0]) == 1
current["animation"] = int(movie_data[4][1]) == 1
current["comedy"] = int(movie_data[4][2]) == 1
current["drama"] = int(movie_data[4][3]) == 1
current["documentary"] = int(movie_data[4][4]) == 1
current["romance"] = int(movie_data[4][5]) == 1
movies_list.append(current)
del current
file_ref.close()
def menu():
movie_selector =("Movie Selector - Please enter an option below:\nL - List all movies\nY - List all movies by year\n"
"T - Search by title\nS - Search by genre, rating, and maximum length\nQ - Quit the program\nOption:")
movie_selector_input = input(movie_selector).upper()
if movie_selector_input == "L":
list_movies()
if movie_selector_input == "Y":
list_by_year()
if movie_selector_input == "T":
search_by_title()
if movie_selector_input == "S":
search()
if movie_selector_input == "Q":
print("Thanks for using my program! Goodbye.")
exit()
else:
print("Invalid input")
print("Please try again")
print()
return menu()
def search():
genre_input = input("Please make a selection from the following genres.\n(Action(A), Animation(N), Comedy(C), "
"Drama(D), Documentary(O), or Romance(R)):").lower()
if genre_input == 'a':
action_genre()
elif genre_input == 'n':
animation_genre()
elif genre_input == 'c':
comedy_genre()
elif genre_input == 'd:':
drama_genre()
elif genre_input == 'o':
documentary_genre()
elif genre_input == 'r':
romance_genre()
else:
print("Invalid genre")
print()
menu()
#this is where I can't get the syntax to work
def action_genre():
for current in movies_list:
if current["action"] == "False":
del current
break
for i in movies_list:#using this to test output
print(i)
load_movies()
menu()
Я сужаю список, исключая вещи, которые не соответствуют параметрам. В функции action_genre я пытаюсь удалить все словари, которые не совпадают с current ["action"] == True. Я пытался использовать "True" и "False" в качестве строк, а также bool True и False для сравнения, и все еще ошибка. К сожалению, я должен использовать булеву логику в соответствии с указаниями моих профессоров.
Его например:
Пример профессора. Видимо, поскольку я новичок, я не могу вставлять изображения. : /
Я занимаюсь программированием 101, поэтому спасибо за ваше терпение, когда я изучаю это, и заранее благодарю за помощь.