Python按特定列对多维字典进行排序

标签 python sorting dictionary lambda

我知道有很多关于此的问题,但我正在尝试按命中率列对下面的字典进行排序。

data = {
    'a': {'get': 1, 'hitrate': 1, 'set': 1},
    'b': {'get': 4, 'hitrate': 20, 'set': 5},
    'c': {'get': 3, 'hitrate': 4, 'set': 3}
}

我尝试了很多东西,最有希望的是下面的方法,但似乎出错了。

s = sorted(data, key=lambda x: int(x['hitrate']))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
TypeError: string indices must be integers, not str

请问我能得到一些帮助吗?

谢谢!

最佳答案

迭代字典会产生键,因此您需要再次在字典中查找 x:

sorted(data, key=lambda x: int(data[x]['hitrate']))

如果您也想要这些值,请对项目进行排序:

sorted(data.items(), key=lambda item: int(item[1]['hitrate']))

关于Python按特定列对多维字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43617984/

相关文章:

ruby-on-rails-3 - Rails 3fields_for-排序顺序丢失

python - 在 Python 中从一对或名称映射到一个值

javascript - 在 react 中搜索关键字列表

python - 类 python 的实例的 getattr 查找失败

python - 使用 sklearn 聚类单变量时间序列

python - 有没有办法在 python 中更改用户的输入?

python - Python标准库,评估引发异常的方式

python - 在打印功能中包含变量的问题

algorithm - 让人们坐在礼堂里的算法——不太管用

perl - 在 Perl 中,如何使用自定义顺序对哈希键进行排序?