Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python按第一个元素对2D数组排序(非唯一)_Python_Arrays_List_Sorting - Fatal编程技术网

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

Python按第一个元素对2D数组排序(非唯一),python,arrays,list,sorting,Python,Arrays,List,Sorting,我有一个非常大的2D数组,其中第二个元素不是唯一的。大概是这样的: list = [ ['text43','value43'], ['text23','value23'], ['text12','value12'], ['text43','different_val_43'], ['text12','another_value12'], ['text04','value04'],

我有一个非常大的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'] ]
您可以使用一个自定义项,该自定义项将返回子列表的第一个元素最先找到的索引,例如:

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']]
[['text43', 'value43'],
 ['text43', 'different_val_43'],
 ['text43', 'anohter_value43'],
 ['text23', 'value23'],
 ['text12', 'value12'],
 ['text12', 'another_value12'],
 ['text04', 'value04']]
您可以使用一个自定义项,该自定义项将返回子列表的第一个元素最先找到的索引,例如:

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']]
[['text43', 'value43'],
 ['text43', 'different_val_43'],
 ['text43', 'anohter_value43'],
 ['text23', 'value23'],
 ['text12', 'value12'],
 ['text12', 'another_value12'],
 ['text04', 'value04']]

看看这是否有用。使用

输出:

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

看看这是否有用。使用

输出:

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

sorted(list1,key=lambda x:-int(x[0][2:])
?您好@Birbal,您需要添加一些您已经尝试过的代码。您尝试过什么吗?不要使用
list
作为python列表的变量名@BearBrown的答案看起来是正确的。谢谢@CharlesLandau…实际上只是一个例子,我没有将它命名为
list
sorted(list1,key=lambda x:-int(x[0][2:]))
?您好@Birbal,您需要添加一些您已经尝试过的代码。您尝试过什么吗?不要使用
list
作为python列表的变量名@BearBrown的答案看起来是正确的。谢谢@CharlesLandau…实际上只是一个例子,我没有给它命名
list