Вы можете использовать пользовательский ключ для сортировки:
print(dict(sorted(my_dict.items(), key=lambda x: x[1]['mark3'], reverse=True)))
Это выводит (в Python 3.6 +):
{'C': {'mark1': '11', 'mark2': '19', 'mark3': '25'}, 'A': {'mark1': '15', 'mark2': '12', 'mark3': '20'}, 'B': {'mark1': '10', 'mark2': '90', 'mark3': '14'}}
До Python 3.6 дикты неупорядочены, поэтому вместо них следует использовать collections.OrderedDict
:
from collections import OrderedDict
my_dict = OrderedDict([('A', {'mark1': '15', 'mark2': '12', 'mark3': '20'}), ('B', {'mark1': '10', 'mark2': '90', 'mark3': '14'}), ('C', {'mark1': '11', 'mark2': '19', 'mark3': '25'})])
print(OrderedDict(sorted(my_dict.items(), key=lambda x: x[1]['mark3'], reverse=True)))
Если вы хотите сделать mark2
вторичным ключом, вместо него вы можете сделать ключ кортежем:
print(dict(sorted(my_dict.items(), key=lambda x: (x[1]['mark3'], x[1]['mark2']), reverse=True)))