@LambertCelebrity

Как отфильтровать произведения по жанрам, включая те, что вводит пользователь?

import json


def music_adder():
    filename = "count.pickle"
    with open(filename, "r+", encoding='UTF-8') as file:
        count = int(json.load(file))
    new_music = {
        'Название песни': input('Введите название композиции '),
        'Автор': input('Введите автора '),
        'Длительность': int(input('Введите продолжительность в минутах ')),
        'Год выпуска': int(input('Введите год издания ')),
        'Жанр': input('Введите жанр '),
    }
    return new_music

def main():
    question = 'y'
    filename = "music_list.json"
    music = []
    music1 = {
        'Название песни': "ave maria",
        'Автор': "Иоганн Себастьян Бах",
        'Длительность': 3,
        'Год выпуска': 1722,
        'Жанр': "Классика",
    }
    music2 = {
        'Название песни': "Winter",
        'Автор': "Антонио Вивальди",
        'Длительность': 2,
        'Год выпуска': 1725,
        'Жанр': "Классика",
    }
    music.append(music1)
    music.append(music2)

    with open(filename, "w", encoding='utf-8') as file:
        json.dump(music, file)

    while question == 'y':
        with open(filename, "r+", encoding='utf-8') as file:
            music_data = json.load(file)
        print('1) Загрузить информацию из файла\n'
              '2) Поиск по наименованию\n'
              '3) Фильтровать по жанру\n'
              '4) Добавить произведение\n'
              '5) Удалить произведение\n'
              '6) Сохранить в файле\n')
        action_name = int(input('Выберите действие: '))
        if not (action_name in range(1, 7)):
            print('Выберите операцию из списка!')
        if action_name == 1:
            for musics in music_data:
                print('Название песни - ' +
                      str(musics['Название песни']))
                print('Автор - ' + str(musics['Автор']))
                print('Длительность - ' +
                      str(musics['Длительность']) + " " + "минуты")
                print('Год выпуска - ' +
                      str(musics['Год выпуска']) + " " + 'год')
                print('Жанр - ' + str(musics['Жанр']))
                print('**************************')
        if action_name == 2:
            print('Пока не знаю как сделать')
        if action_name == 3:
            genre = input(print('Введите жанр, по которому'
                                ' нужно отфильтровать'))
            for i in range(1, 5):
                if music['Жанр'] == genre:
                    print(music)
        if action_name == 4:
            music.append(music_adder())
            with open(filename, "w", encoding='utf-8') as file:
                json.dump(music, file)
        if action_name == 5:
            index = int(input('Какое произведение'
                              ' по порядку вы хотите удалить?'))
            music.pop(index - 1)
            with open(filename, "w", encoding='utf-8') as file:
                json.dump(music, file)
        if action_name == 6:
            with open(filename, "a+", encoding='utf-8') as file:
                json.dump(music, file)
        question = input('Продолжить ввод? [y/N]')


if __name__ == "__main__":
    main()
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@Wispik
music = sorted(music, key=lambda m: m['Жанр'])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы