为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

GCT1015 2022-10-06 18:40:36
我想使用 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}}
查看完整描述

1 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

尝试:


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))


查看完整回答
反对 回复 2022-10-06
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信