我有一本看起来像这样的字典:
{'key_info': (rank, raw_data1, raw_data2),
'key_info2': ...}
基本上我需要返回一个按排序顺序排列的键列表,它是根据元组中的 rank
字段排序的。
我的代码现在看起来像这样(diffs
是上面字典的名称):
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()
只给你键,而不是值,所以如果你想对它们进行排序,你必须使用键从字典中检索值:
return sorted(self.diffs.keys(), key=lambda x: self.diffs[x], reverse=True)
由于您是根据 rank
排序的,它是元组中的第一项,因此您无需指定要排序的值元组中的哪一项。但是如果你想对 raw_data1
进行排序:
return sorted(self.diffs.keys(), key=lambda x: self.diffs[x][1], reverse=True)
关于python - 以元组为值对字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6349296/