Вы можете использовать параметр key
для list.sort()
.Предполагая, что внешний словарь называется d
, код может выглядеть следующим образом:
for scores in d.itervalues():
scores.sort(key=lambda x: next(x.itervalues()), reverse=True)
Функция lambda просто извлекает единственное значение словаря.
Я думаю, что вы будетелучше использовать кортежи вместо словарей в качестве значений вашего списка:
{id_1: [(id_2, score_2), (id_3, score_3),...], id_2: [(id_1, score_1),...]}
Используя эту структуру данных, код сортировки будет
for scores in d.itervalues():
scores.sort(key=lambda x: x[1], reverse=True)
или эквивалентно, но немного быстрее
for scores in d.itervalues():
scores.sort(key=operator.itemgetter(1), reverse=True)