【发布时间】:2016-02-17 17:18:38
【问题描述】:
我是 Python 新手,目前正在努力解决问题以提高我的编码技能。我正在研究一个需要stable sort python 中的字典的问题。请在下面找到详细信息:
输入:
1 2
16 3
11 2
20 3
3 5
26 4
7 1
22 4
以上输入,我已经添加成两个lists k and v:
k = ['1', '16', '11', '20', '3', '26', '7', '22']
v = ['2', '3', '2', '3', '5', '4', '1', '4']
我已将这两个列表添加到字典中,以将其作为键值对。我使用了OrderDict,因为我希望元素的顺序与输入中的顺序相同。
from collections import OrderedDict
d = OrderedDict(zip(k, v))
现在,我需要按照与值相反的顺序对字典 d 进行排序。 (实际上我必须做一个稳定的排序,因为 python 中的sorted 是一个稳定的排序,所以我使用了它。来源:Here)为此:
s = sorted(d, key = itemgetter(1), reverse=True)
预期输出:
3 5
26 4
22 4
16 3
20 3
1 2
11 2
7 1
但是在我实现了上面的sorted 函数之后,我无法得到预期的输出。我得到IndexError: string index out of range
谁能告诉我我哪里做错了。我的方法是错误的还是流程是错误的?您能否告诉我为什么我无法按预期获得输出。提前致谢。任何帮助将不胜感激。
【问题讨论】:
标签: python sorting dictionary