@denislysenko
data engineer

Как отсортировать словарь по значениям, когда значения это словарь с это тюплами, которые являются строками?

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

вот как выглядит словарь:

{'Action': ["('Terminal Velocity', '1994')", "('Terminator 2: Judgment Day', '1991')", "('Terminator, The', '1984')", "('Terminator 3: Rise of the Machines', '2003')", "('Terminator Salvation', '2009')", "('Terminator Genisys', '2015')"], 'Adventure': ["('Terminator 3: Rise of the Machines', '2003')", "('Terminator Salvation', '2009')", "('Terminator Genisys', '2015')"], 'Comedy': ["('Terminal, The', '2004')"], 'Drama': ["('Terminal, The', '2004')"], 'Mystery': ["('Terminal Velocity', '1994')"], 'Romance': ["('Terminal, The', '2004')"], 'Sci-Fi': ["('Terminator 2: Judgment Day', '1991')", "('Terminator, The', '1984')", "('Terminator 3: Rise of the Machines', '2003')", "('Terminator Salvation', '2009')", "('Terminator Genisys', '2015')"], 'Thriller': ["('Terminal Velocity', '1994')", "('Terminator, The', '1984')", "('Terminator Salvation', '2009')", "('Terminator Genisys', '2015')"]}
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
Если нужно весь словарь целиком отсортировать - по data.keys() пробегитесь... :
import ast
data = {
    'Action': [...],
    ...
}
sorted(map(ast.literal_eval, data['Action']), key=lambda x:(x[1], x[0]), reverse=True)

# [('Terminator Genisys', '2015'),
#  ('Terminator Salvation', '2009'),
#  ('Terminator 3: Rise of the Machines', '2003'),
#  ('Terminal Velocity', '1994'),
#  ('Terminator 2: Judgment Day', '1991'),
#  ('Terminator, The', '1984')]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы