【发布时间】:2020-12-18 03:13:34
【问题描述】:
我一直在关注这个答案: Python sort a JSON list by two key values
我想根据我的情况进行调整:
[
{'score': 0.1, 'id': 1, 'flag': true},
{'score': 0.234, 'id': 2, 'flag': false},
{'score': 0.4, 'id': 3, 'flag': false}
]
我需要按标志(布尔)和分数(浮点)进行排序,就像您在 SQL 中所做的那样。 在这种情况下,结果将是:
[
{'score': 0.1, 'id': 1, 'flag': true}, // first because the flag is true
{'score': 0.4, 'id': 3, 'flag': false} //second because the score is higher
{'score': 0.234, 'id': 2, 'flag': false},
]
我正在尝试使用
sorted_result = sorted(json, key=lambda k: (bool(k['flag']), -float(k['score'])))
但它没有按预期排序
【问题讨论】:
-
您提到的问题似乎为您提供了所需的所有信息。但是为了完整起见,您应该使用代码产生的实际输出来更新您的问题,
-
好吧,它不包括 bool 和 float 标志的组合。排序结果不存在!
-
您需要提供两个排序键,即
flag, score -
这和 JSON 有什么关系?