Python按第一个元素对2D数组排序(不唯一)

2024-10-05 10:21:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常大的二维数组,其中第二个元素不是唯一的。像这样:

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'] ]

Tags: 元素顺序anothervallistdifferentvalue12value23
2条回答

看看这是否有用。使用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']]

您可以使用一个自定义的sorting function,它将返回子列表的第一个元素最先找到的索引,例如:

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']]

相关问题 更多 >

    热门问题