Сортировка двухмерного массива по первому элементу (не уникально) - PullRequest
0 голосов
/ 13 ноября 2018

У меня очень большой 2D-массив, где вторые элементы не уникальны.Примерно так:

list = [ ['text43','value43'], 
         ['text23','value23'], 
         ['text12','value12'],
         ['text43','different_val_43'],
         ['text12','another_value12'], 
         ['text04','value04'], 
         ['text43','anohter_value43'] ]

Я бы хотел отсортировать его по первому элементу, но не по алфавиту, а только по порядку появления первого элемента.Желаемый вывод:

list = [ ['text43','value43'],
         ['text43','different_val_43'],
         ['text43','anohter_value43'],
         ['text23','value23'],
         ['text12','value12'],
         ['text12','another_value12'],
         ['text04','value04'] ]

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Посмотрите, поможет ли это.Использование sorted ()

lst = [ ['text43','value43'], 
         ['text23','value23'], 
         ['text12','value12'],
         ['text43','different_val_43'],
         ['text12','another_value12'], 
         ['text04','value04'], 
         ['text43','anohter_value43'] ]

sorted(lst, reverse=True)

Вывод:

[['text43', 'value43'],
 ['text43', 'different_val_43'],
 ['text43', 'anohter_value43'],
 ['text23', 'value23'],
 ['text12', 'value12'],
 ['text12', 'another_value12'],
 ['text04', 'value04']]
0 голосов
/ 13 ноября 2018

Вы можете использовать пользовательскую функцию сортировки , которая будет возвращать индекс, по которому первый элемент подсписка будет найден, например:

lst = [['text43','value43'],
       ['text23','value23'],
       ['text12','value12'],
       ['text43','different_val_43'],
       ['text12','another_value12'],
       ['text04','value04'],
       ['text43','anohter_value43']]

d = {}
for i, item in enumerate(lst):
    if item[0] not in d:
        d[item[0]] = i

lst.sort(key=lambda item: d[item[0]])
print(lst)

Вывод:

[['text43', 'value43'],
 ['text43', 'different_val_43'],
 ['text43', 'anohter_value43'],
 ['text23', 'value23'],
 ['text12', 'value12'],
 ['text12', 'another_value12'],
 ['text04', 'value04']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...