Как отсортировать этот список списков и удалить пустые? - PullRequest
1 голос
/ 26 мая 2020

У меня есть этот список списков.

list_code = [[], [], [{'CODE': '324113', 'X': '30909.560489999996'}], [], [],
            [{'CODE': '324108', 'X': '31006.29439'}], [], ]

Я хочу удалить пустые списки и отсортировать непустые согласно CODE в порядке возрастания. Желаемый результат (список словарей) будет выглядеть примерно так:

correct_code = [{'CODE': '324108', 'X': '30909.560489999996'},
                {'CODE': '324113', 'X': '31006.29439'}]

Я использую python 3,7

Ответы [ 4 ]

2 голосов
/ 26 мая 2020

Начните с создания таких новых списков;

list_code = [[], [], [{'CODE': '324113', 'X': '30909.560489999996'}], [], [], [{'CODE': '324108', 'X': '31006.29439'}], []]
temp_list_code = []
temp_dict_code = []

Эта функция сохранит непустые списки во временном массиве;

def remove_empty():
    for x in list_code:
        if len(x) > 0:
            temp_list_code.append(x)

Это превратит списки списков в единый список и сортировка;

def sort_dicts():
    for y in range(0, len(temp_list_code)):
        temp_dict_code.append(temp_list_code[y][y-1])

На данный момент у нас есть список словарей, но он еще не отсортирован

[{'CODE': '324113', 'X': '30909.560489999996'}, {'CODE': '324108', 'X': '31006.29439'}]
2 голосов
/ 26 мая 2020

Вы можете попробовать это, используя метод sorted

Удаление пустых списков

new_list_code = []
for val in list_code:
    if len(val) > 0:
        new_list_code.append(*val)

Использование функции lambda для сортировки

result = sorted(new_list_code, key=lambda x: x[0]['CODE'])
2 голосов
/ 26 мая 2020

Вы можете использовать

list_code = [[], [], [{'CODE': '324113', 'X': '30909.560489999996'}], [], [],             [{'CODE': '324108', 'X': '31006.29439'}], [], ]
 correct_code = []
 for i in list_code:
    if i:
        correct_code.append(i[0])
 correct_code.sort(key=lambda x: x['CODE'])

или

correct_code = [i[0] for i in list_code if i]
correct_code.sort(key=lambda x: x['CODE'])
1 голос
/ 26 мая 2020
sorted([item[0] for item in a if item], key=lambda x: x['CODE'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...