python - Custom sort order of list -


i have lists such as:

mylist1 = ['alpha', 'green'] mylist2 = ['blue', 'alpha', 'red'] 

i want sort these 2 lists custom ordered list: ['red','blue','green','alpha']

so mylist1 = ['green', 'alpha'] , mylist2 = ['red','blue','alpha']

how can in python?

demonstration:

>>> mylist1 = ['alpha', 'green'] >>> mylist2 = ['blue', 'alpha', 'red'] >>> sort_order = ['red', 'blue', 'green', 'alpha'] >>> mylist1.sort(key=sort_order.index) >>> mylist1 ['green', 'alpha'] >>> mylist2.sort(key=sort_order.index) >>> mylist2 ['red', 'blue', 'alpha'] 

explanation:

the key parameter in list.sort causes list determine order comparing key(element) instead of element. example, case-insensitive sort, can pass key function makes string lowercase. lowercase elements compared, original elements preserved:

>>> x = ["age", "bonkers", "cheese"] >>> x.sort() >>> x ['bonkers', 'age', 'cheese'] >>> str.lower("bonkers") 'bonkers'     >>> x.sort(key=str.lower) >>> x ['age', 'bonkers', 'cheese'] 

using sort_order.index key uses index element has in sort_order list determine order instead of element itself. 'red' uses 0, 'blue' uses 1, etc... result list sorted gets sorted according each element in sort_order.


Comments

Popular posts from this blog

java - Run a .jar on Heroku -

java - Jtable duplicate Rows -

validation - How to pass paramaters like unix into windows batch file -