Python对部分列表项进行排序
我解析了一个tsv文件,并具有以下结构:Python对部分列表项进行排序,python,python-3.x,list,Python,Python 3.x,List,我解析了一个tsv文件,并具有以下结构: [['x1','y1','x2','y2'], [1,1,0,80], [.95,1,.05,70], [.93,1,.1,65], … ] Myx1值按降序排列;从1开始到0。Myx2值按升序排列;从0到1。我需要两者都按升序排列。我不能只是翻转列表,否则x2将按降序排列。另外,请注意x1和y1是成对的,因此无论我们对x1做什么,我们都必须对y1做什么,以确保数据仍然保留 出于羞愧,我省略了我的尝试,但如果每个人都承诺不笑,我尝试的是添加一个-I,从
[['x1','y1','x2','y2'],
[1,1,0,80],
[.95,1,.05,70],
[.93,1,.1,65],
…
]
Myx1
值按降序排列;从1
开始到0
。Myx2
值按升序排列;从0
到1
。我需要两者都按升序排列。我不能只是翻转列表,否则x2
将按降序排列。另外,请注意x1
和y1
是成对的,因此无论我们对x1
做什么,我们都必须对y1
做什么,以确保数据仍然保留
出于羞愧,我省略了我的尝试,但如果每个人都承诺不笑,我尝试的是添加一个-I
,从我的原始列表中获取最后一项raw_data
是上面看到的数据结构
new_list = [[raw_data[2][-i], raw_data[3][-i]] for i in raw_data
不幸的是,这没有起作用
问题:我如何编写一个列表,使我的
x1
(以及相应的y1
值)按升序排列 您可以利用这样一个事实:在比较元组时,比较基于第一个元素——对于相等的第一个元素,比较第二个元素。考虑到这一点,您可以首先将列表列表转换为元组列表,将每个“x1”值与相应的“y1”值关联,然后获得排序列表:
>>> lst = [['x1','y1','x2','y2'],[1,1,0,80],[.95,1,.05,70],[.93,1,.1,65]]
>>> sorted((x1, y1) for x1, y1, x2, y2 in lst[1:])
[(0.93, 1), (0.95, 1), (1, 1)]
您可以利用这样一个事实:在比较元组时,比较基于第一个元素——对于相等的第一个元素,比较第二个元素。考虑到这一点,您可以首先将列表列表转换为元组列表,将每个“x1”值与相应的“y1”值关联,然后获得排序列表:
>>> lst = [['x1','y1','x2','y2'],[1,1,0,80],[.95,1,.05,70],[.93,1,.1,65]]
>>> sorted((x1, y1) for x1, y1, x2, y2 in lst[1:])
[(0.93, 1), (0.95, 1), (1, 1)]
最好添加您以前尝试过的代码,以便我们更好地理解您的意图,从而使您得到更好的答案。为了避免误解,请始终包含示例数据的预期输出/结果。最好添加您以前尝试的代码,以便我们更好地理解您的意图,从而使您获得更好的答案。为了避免误解,请始终包含示例数据的预期输出/结果。