我有一本看起来像这样的字典:

{'key_info': (rank, raw_data1, raw_data2),
 'key_info2': ...}

基本上,我需要按排序顺序返回键列表,该列表是基于元组中的rank字段进行排序的。

我的代码现在看起来像这样(diffs是上面的dict的名称):
def _sortRanked(self):
    print(type(self.diffs))
    return sorted(self.diffs.keys(), key=lambda x: x[1], reverse=True)

现在,当我运行它时,它会返回此代码:
return sorted(self.diffs.keys(), key=lambda x: x[1], reverse=True)
IndexError: string index out of range

最佳答案

keys()仅提供键,不提供值,因此,如果要对它们进行排序,则必须使用键从dict中检索值:

return sorted(self.diffs.keys(), key=lambda x: self.diffs[x], reverse=True)

由于您正在对rank进行排序,而raw_data1是元组中的第一项,因此您无需在值元组中指定要对其进行排序的项。但是,如果您想对ojit_code进行排序:
return sorted(self.diffs.keys(), key=lambda x: self.diffs[x][1], reverse=True)

关于python - 使用元组作为值对字典进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6349296/

10-11 07:42