【问题标题】:Sort and rearrange JSON array based on entries根据条目对 JSON 数组进行排序和重新排列
【发布时间】:2019-06-23 16:09:54
【问题描述】:

我完全是 python 新手,但仍在寻找一种优雅的方式来解决以下任务。我已经搜索过论坛,但我只找到了其他列表问题的非常特殊的解决方案。

我正在尝试在 python 中分析、排序和重新排列 JSON 数组。但到目前为止,我还没有找到一个可行的解决方案来将列表从最低值条目排序到最高值条目。

这是我的示例列表:

 [{'path': 'file_abc.wav', 'val': [0.49]}, 
  {'path': 'file_dfg.wav', 'val': [0.0]}, 
  {'path': 'file_ejh.wav', 'val': [1.0]}]

我想根据它的值从最低到最高重新排列输入列表:

[{'path_old': 'file_dfg.wav', 'val': [0.0]}, 
 {'path_old': 'file_abc.wav', 'val': [0.49]}, 
 {'path_old': 'file_ejh.wav', 'val': [1.0]}]

如果有人能给我提示如何以一种好的方式解决这个问题,我将非常高兴!

【问题讨论】:

标签: python list numpy sorting


【解决方案1】:

试试这个:

sorted(your_list, key=lambda x:x['val'][0])

sorted 接受一个参数 (key),如果您设置它,它将根据该参数对可迭代对象进行排序。

【讨论】:

【解决方案2】:
lst = [
  {'path': 'file_abc.wav', 'val': [0.49]}, 
  {'path': 'file_dfg.wav', 'val': [0.0]}, 
  {'path': 'file_ejh.wav', 'val': [1.0]}
]
print(sorted(lst, key=lambda d: d['val'][0]))

打印出来:

[
  {'path': 'file_dfg.wav', 'val': [0.0]}, 
  {'path': 'file_abc.wav', 'val': [0.49]}, 
  {'path': 'file_ejh.wav', 'val': [1.0]}
]

【讨论】:

    【解决方案3】:

    如果您不创建新列表,也可以使用lst.sort(key = lambda function)

    aa =  [{'path': 'file_abc.wav', 'val': [0.49]}, 
      {'path': 'file_dfg.wav', 'val': [0.0]}, 
      {'path': 'file_ejh.wav', 'val': [1.0]}]
    
    
    aa.sort(key = lambda x:x['val'])
    print (aa)
    
    #OUTPUT:
    #[{'path': 'file_dfg.wav', 'val': [0.0]}, {'path': 'file_abc.wav', 'val': [0.49]}, {'path': 'file_ejh.wav', 'val': [1.0]}]
    

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 1970-01-01
      • 2019-09-01
      • 2013-09-30
      • 1970-01-01
      • 2018-11-01
      • 2018-12-08
      • 2015-08-21
      • 1970-01-01
      相关资源
      最近更新 更多