сортировка значений словаря Python

У меня есть 2 словаря, dict1 и dict2 , которые содержат одинаковые ключи, но разные значения для ключей. Я хочу для каждого словаря отсортировать значения от наибольшего к наименьшему, а затем присвойте каждому значению ранг от 1 до N, где 1 является наибольшим значением. Отсюда я хочу получить разность рангов значений в каждом словаре для одного и того же ключа. Например:

dict1 = {a:0.6, b:0.3, c:0.9, d:1.2, e:0.2}
dict2 = {a:1.4, b:7.7, c:9.0, d:2.5, e:2.0}

# sorting by values would look like this:
dict1 = {d:1.2, c:0.9, a:0.6, b:0.3, e:0.2}
dict2 = {c:9.0, b:7.7, d:2.5, e:2.0, a:1.4}

#ranking the values would produce this:
dict1 = {d:1, c:2, a:3, b:4, e:5}
dict2 = {c:1, b:2, d:3, e:4, a:5}

#computing the difference between ranks would be something like this:
diffs = {}
for x in dict1.keys():
    diffs[x] = (dict1[x] - dict2[x])

#diffs would look like this:
diffs[a] = -2
diffs[b] = 2
diffs[c] = 1
diffs[d] = -2
diffs[e] = 1

Я знаю, что словари должны быть случайными и не сортируемыми, но, может быть, есть способ поместить ключи и значения в список? Основные проблемы, с которыми я сталкиваюсь, - это получение ключей и значений, отсортированных по значению (от наибольшего к наименьшему), а затем изменение значения до соответствующего ранга в отсортированном списке.

9
задан marsx 18 May 2011 в 14:06
поделиться