python 中的嵌套列表和排序
Nested list and sorting in python
不知道可不可以。我试图找到一种在以下条件下对嵌套列表进行排序的方法
- 我想将表格 1 指向另一个(不是整个列表,只是其中的一部分)
- 应该根据子列表的第 3 个元素进行排序
我想要的想法:
PAE=[['a',0,8],
['b',2,1],
['c',4,3],
['d',7,2],
['e',8,4]]
#PAE[1:4].sort(key=itemgetter(2)) (something like this)
or
#sorted(PAE[1:4],key=itemgetter(2)) (something like this)
` # ^ i know both are wrong but just for an idea
`
#output should be like this
['a', 0, 8]
['b', 2, 1]
['d', 7, 2]
['c', 4, 3]
['e', 8, 4]
我是python的新手,但我尽我所能找到解决方案但失败了。
应该这样做:
from operator import itemgetter
PAE=[['a',0,8],
['b',2,1],
['c',4,3],
['d',7,2],
['e',8,4]]
split_index = 1
print PAE[:split_index]+sorted(PAE[split_index:],key=itemgetter(2))
#=> [['a', 0, 8], ['b', 2, 1], ['d', 7, 2], ['c', 4, 3], ['e', 8, 4]]
对切片进行排序并写回:
>>> PAE[1:4] = sorted(PAE[1:4], key=itemgetter(2))
>>> PAE
[['a', 0, 8], ['b', 2, 1], ['d', 7, 2], ['c', 4, 3], ['e', 8, 4]]
这里不拆分,问题是什么是最好的可读性
PAE=[['a',0,8],
['b',2,1],
['c',4,3],
['d',7,2],
['e',8,4]]
print (sorted(PAE, key=lambda PAE: PAE[1] if not PAE[1] else PAE[2]))
>>> [['a', 0, 8], ['b', 2, 1], ['d', 7, 2], ['c', 4, 3], ['e', 8, 4]]
不知道可不可以。我试图找到一种在以下条件下对嵌套列表进行排序的方法
- 我想将表格 1 指向另一个(不是整个列表,只是其中的一部分)
- 应该根据子列表的第 3 个元素进行排序
我想要的想法:
PAE=[['a',0,8],
['b',2,1],
['c',4,3],
['d',7,2],
['e',8,4]]
#PAE[1:4].sort(key=itemgetter(2)) (something like this)
or
#sorted(PAE[1:4],key=itemgetter(2)) (something like this)
` # ^ i know both are wrong but just for an idea
`
#output should be like this
['a', 0, 8]
['b', 2, 1]
['d', 7, 2]
['c', 4, 3]
['e', 8, 4]
我是python的新手,但我尽我所能找到解决方案但失败了。
应该这样做:
from operator import itemgetter
PAE=[['a',0,8],
['b',2,1],
['c',4,3],
['d',7,2],
['e',8,4]]
split_index = 1
print PAE[:split_index]+sorted(PAE[split_index:],key=itemgetter(2))
#=> [['a', 0, 8], ['b', 2, 1], ['d', 7, 2], ['c', 4, 3], ['e', 8, 4]]
对切片进行排序并写回:
>>> PAE[1:4] = sorted(PAE[1:4], key=itemgetter(2))
>>> PAE
[['a', 0, 8], ['b', 2, 1], ['d', 7, 2], ['c', 4, 3], ['e', 8, 4]]
这里不拆分,问题是什么是最好的可读性
PAE=[['a',0,8],
['b',2,1],
['c',4,3],
['d',7,2],
['e',8,4]]
print (sorted(PAE, key=lambda PAE: PAE[1] if not PAE[1] else PAE[2]))
>>> [['a', 0, 8], ['b', 2, 1], ['d', 7, 2], ['c', 4, 3], ['e', 8, 4]]