python - 以元组为值对字典进行排序

标签 python sorting dictionary tuples

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

{'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/

相关文章:

list - 如何仅获取与 Elasticsearch 列表中匹配的元素值?

python - 合并词典与子词典

angular - 如何在 Angular 4+ 中更新 map 现有键的值

python - 'dict' 对象没有属性 'has_key'

Python 检测 Windows 上的屏幕保护程序启动/停止事件

python - 在 South 数据迁移中提交

python - 使用空格键启动和停止 Python turtle

php - 在 FacetWP 中排序价格

python - 有没有一种简单的方法来扩展/完成 pandas DataFrame 以包含多列缺失的观察结果?

c++ - Eigen 库成员上 nth_element 的默认策略是什么?