Мы сортируем список значений для каждого ключа в словаре по значению для ключа percentage
в порядке убывания, а затем используем словарное понимание, чтобы воссоздать словарь
dct = {"key1": [{"title":"bla bla", "percentage": "0.3493"},{"title":"bla bla bla", "percentage":"0.293"}],
"key2": [{"title":"bla bla", "percentage": "0.635"},{"title":"bla bla bla", "percentage":"0.987"}]}
result = {key: sorted(value, key=lambda x:x['percentage'], reverse=True) for key, value in dct.items()}
print(result)
Вывод будет
{'key1': [{'title': 'bla bla', 'percentage': '0.3493'},
{'title': 'bla bla bla', 'percentage': '0.293'}],
'key2': [{'title': 'bla bla bla', 'percentage': '0.987'},
{'title': 'bla bla', 'percentage': '0.635'}]}
Для глобального представления мы сначала обновляем внутренние словари, чтобы у нас там был атрибут key
.Затем мы создаем общий список значений (глобальное представление), объединяя весь список значений, а затем сортируя их по процентам в порядке убывания
dct = {"key1": [{"title":"bla bla", "percentage": "0.3493"},{"title":"bla bla bla", "percentage":"0.293"}],
"key2": [{"title":"bla bla", "percentage": "0.635"},{"title":"bla bla bla", "percentage":"0.987"}]}
#Update inner dictionaries with the name of the key for each dictionary
for key, value in dct.items():
for v in value:
v.update({'key':key})
global_view = sorted([v for value in dct.values() for v in value], key=lambda x:x['percentage'], reverse=True)
print(global_view)
Вывод здесь будет
[
{'title': 'bla bla bla', 'percentage': '0.987', 'key': 'key2'},
{'title': 'bla bla', 'percentage': '0.635', 'key': 'key2'},
{'title': 'bla bla', 'percentage': '0.3493', 'key': 'key1'},
{'title': 'bla bla bla', 'percentage': '0.293', 'key': 'key1'}
]