猿问

通过接近值对Python中的JSON数组进行排序

我想使用 python 以非常特定的方式对 JSON 数组进行排序。这是我要排序的 JSON 示例:


[

{'name': 'ZARA', 'risk': {'long': 3.9119195349019025, 'medium': 5, 'short': 4.485673554927903}}, 

{'name': 'SANTANDER', 'risk': {'long': 4.712942479560081, 'medium': 5, 'short': 4.348982243206375}}, 

{'name': 'BBC', 'risk': {'long': 5, 'medium': 5, 'short': 5}}, 

{'name': 'DISNEY', 'risk': {'long': 5, 'medium': 5, 'short': 5}}, 

{'name': 'BBVA', 'risk': {'long': 5, 'medium': 5, 'short': 5}}, 

{'name': 'IBEX35', 'risk': {'long': 4.8565761936412235, 'medium': 1.9216799766282, 'short': 1.3943451064412182}}

]

另一方面,我有一个给定的值,例如 3。我需要根据风险接近给定值(在本例中为 3)对给定数组的元素进行排序。给出的结果必须是给定的 JSON 数组,在这种情况下,顺序必须是:


1º:

{'name': 'SANTANDER', 'risk': {'long': 4.712942479560081, 'medium': 5, 'short': 4.348982243206375}}


2º:

{'name': 'ZARA', 'risk': {'long': 3.9119195349019025, 'medium': 5, 'short': 4.485673554927903}}´


3º:

{'name': 'IBEX35', 'risk': {'long': 4.8565761936412235, 'medium': 1.9216799766282, 'short': 1.3943451064412182}}


4º:

{'BBC', 'risk': {'long': 5, 'medium': 5, 'short': 5}}


5º:

{'name': 'DISNEY', 'risk': {'long': 5, 'medium': 5, 'short': 5}}


6º:

{'name': 'BBVA', 'risk': {'long': 5, 'medium': 5, 'short': 5}}


GCT1015
浏览 120回答 1
1回答

函数式编程

尝试:def sort_by_proximity(lst, value):    return sorted(lst, key=lambda x: abs(x['risk']['short'] - value))对于给定的示例,像这样使用它:lst = [{'name': 'ZARA', 'risk': {'long': 3.9119195349019025, 'medium': 5, 'short': 4.485673554927903}}, {'name': 'SANTANDER', 'risk': {'long': 4.712942479560081, 'medium': 5, 'short': 4.348982243206375}}, {'name': 'BBC', 'risk': {'long': 5, 'medium': 5, 'short': 5}}, {'name': 'DISNEY', 'risk': {'long': 5, 'medium': 5, 'short': 5}}, {'name': 'BBVA', 'risk': {'long': 5, 'medium': 5, 'short': 5}}, {'name': 'IBEX35', 'risk': {'long': 4.8565761936412235, 'medium': 1.9216799766282, 'short': 1.3943451064412182}}]print(sort_by_proximity(lst, 3))
随时随地看视频慕课网APP

相关分类

Python
我要回答