Сортировка и перестановка массива JSON на основе записей - PullRequest
0 голосов
/ 30 января 2019

Я новичок в Python, но все еще ищу элегантный способ решить следующую задачу.Я уже искал по форуму, но я нашел очень конкретные решения для других проблем со списком.

Я пытаюсь проанализировать, отсортировать и перегруппировать массив JSON в python.Но я до сих пор не нашел работающего решения для сортировки списка от записей с самым низким значением до самого высокого значения.

это мой список примеров:

 [{'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]}]

Я был бы очень рад, если бы кто-нибудь дал мне подсказку, как решить эту проблему хорошим способом!

Ответы [ 3 ]

0 голосов
/ 30 января 2019
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]}
]
0 голосов
/ 30 января 2019

Если вы не можете создать новый список, вы также можете использовать 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]}]
0 голосов
/ 30 января 2019

Попробуйте:

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

sorted принимает аргумент (key) и, если вы его установите, он будет сортировать эту итерацию на основе этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...