Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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 如何按要求顺序对复杂列表进行排序?_Python - Fatal编程技术网

Python 如何按要求顺序对复杂列表进行排序?

Python 如何按要求顺序对复杂列表进行排序?,python,Python,假设我有以下列表: list1 = [ ['AC', '1'], ['AF', '0.167'], ['AN', '6'],['CAD', '2.741'], ['Bas', '-2.542'], ['CAD', '1.718'], ['AC', '6'],['AN', '6'],['1000g', '0.9998'] ] 在此列表中,它将子列表中的第一个元素视为键(例如,AC,AF…),将子列表中的第二个元素视为值(例如,1,0.167…

假设我有以下列表:

list1 = [
         ['AC', '1'], ['AF', '0.167'], ['AN', '6'],['CAD', '2.741'], ['Bas', '-2.542'], 
         ['CAD', '1.718'], ['AC', '6'],['AN', '6'],['1000g', '0.9998']
        ]
在此列表中,它将子列表中的第一个元素视为键(例如,AC,AF…),将子列表中的第二个元素视为值(例如,1,0.167…)

有些子列表完全相同(例如,['AN',6']),有些子列表具有相同的键(例如,AC)或相同的值

我想按要求对列表进行排序,1。首先按键排序(数字第一(1000g是第一个),然后按字母顺序A、B、C排序),2。如果它们有相同的键,哪个先出现(例如,['CAD',2.741'],然后是['CAD',1.718'],即使值可能不是数字,它仍然需要遵循第二个要求)

我尝试使用
list1.sort()
,但无法达到第二个要求,它总是首先返回较小的数字(值)

排序后的列表1应如下所示:

list1_sorted = [
    ['1000g', '0.9998'], ['AC', '1'],  ['AC', '6'], ['AF', '0.167'], 
    ['AN', '6'],['AN', '6'],['Bas', '-2.542'], ['CAD', '2.741'],  ['CAD', '1.718']
            ]
谢谢,有什么想法吗?
如果您认为需要更多说明,只需发表评论。

使用
list.index
对其进行排序:

list1 = [
    ['AC', '1'], ['AF', '0.167'], ['AN', '6'], ['CAD', '2.741'], ['Bas', '-2.542'],
    ['CAD', '1.718'], ['AC', '6'], ['AN', '6'], ['1000g', '0.9998']
]

print(sorted(list1, key=lambda x: (x[0], list1.index(x))))

# [['1000g', '0.9998'], ['AC', '1'], ['AC', '6'], ['AF', '0.167'], ['AN', '6'], ['AN', '6'], ['Bas', '-2.542'], ['CAD', '2.741'], ['CAD', '1.718']]

['AC',1']
怎么能排在第一位呢。它应该是
['AC',6']
右一?不,因为['AC',1']在['AC',6']前面。所以['AC','1']排在第一位,同样地,['CAD','2.741']排在第一位,因为['CAD','2.741']在['CAD','1.718']前面,我的答案怎么了?