我有一个看起来像这样的结构:
{'key_info':(rank,raw_data1,raw_data2),'key_info2':....}
Run Code Online (Sandbox Code Playgroud)
基本上我需要按照排序顺序返回键列表,该列表基于元组中的排名字段进行排序.
我的代码现在看起来像这样(diffs是上面结构的名称):
def _sortRanked(self):
print(type(self.diffs))
return sorted(self.diffs.keys(), key=lambda x: x[1], reverse=True)
Run Code Online (Sandbox Code Playgroud)
当我运行它时,现在返回此:
return sorted(self.diffs.keys(), key=lambda x: x[1], reverse=True)
IndexError: string index out of range
Run Code Online (Sandbox Code Playgroud)
我希望有人可以从中得到一点意义并帮助我.
编辑:
我改成了:
def _sortRanked(self):
return sorted(self.diffs.keys(), key=lambda x: self.diffs[x][0], reverse=True)
Run Code Online (Sandbox Code Playgroud)
我现在得到一个奇怪的命令,它返回数据.顺序是(摘录,并按照上面相同的字段顺序):
R : 3.64486899669e-05 3605 11
P : 3.11612504885e-05 1528 4
C : 2.50018364323e-05 2316 7
Q : -3.49014288804e-05 152 2
T : -4.45535602789e-05 2623 11
Z : -0.000101817241062 491 6
q : -0.000301208352276 1812 19
Run Code Online (Sandbox Code Playgroud)
keys()
只提供键而不是值,因此如果要对它们进行排序,则必须使用键从dict中检索值:
return sorted(self.diffs.keys(), key=lambda x: self.diffs[x], reverse=True)
Run Code Online (Sandbox Code Playgroud)
由于您正在排序rank
,这是元组中的第一项,因此您无需指定要排序的值元组中的哪个项目.但如果你想排序raw_data1
:
return sorted(self.diffs.keys(), key=lambda x: self.diffs[x][1], reverse=True)
Run Code Online (Sandbox Code Playgroud)