我有一本看起来像这样的字典:
{'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/