【发布时间】:2011-08-28 02:40:58
【问题描述】:
我有 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
我知道字典是随机的且不可排序的,但也许有一种方法可以将键和值放入列表中?我面临的主要挑战是获取按值(从大到小)排序的键和值,然后将值更改为其在排序列表中的相应排名。
【问题讨论】:
标签: python sorting dictionary