Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
246 views
in Technique[技术] by (71.8m points)

How to have primary and secondary sorting stipulations for a list of lists in Python

I have this list of lists:

myList = [[1, 200], [3, 200], [4, 300], [2, 200], [1, 300]]

And would like to know how I could sort it primarily by the second item in each nested list then secondarily by the first item.

I would like the list to end in this order:

[[1, 200], [2, 200], [3, 200], [1, 300], [4, 300]]

I have done myList.sort(key = lambda x : x[1]) but this only sorts by the second item. I'm not sure how to have primary and secondary sorting stipulations.

Thanks!

question from:https://stackoverflow.com/questions/65557398/how-to-have-primary-and-secondary-sorting-stipulations-for-a-list-of-lists-in-py

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
import operator

myList = [[1, 200], [3, 200], [4, 300], [2, 200], [1, 300]]

new = sorted(myList, key=operator.itemgetter(1, 0))

print (new)

You just need to mention the priority in itemgetter(). 1 first for the second position, then 0 for the first.

Output:

[[1, 200], [2, 200], [3, 200], [1, 300], [4, 300]]

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...