men*_*sah 5 python sorting list
我有以下列表:
mylist1 = ['alpha', 'green']
mylist2 = ['blue', 'alpha', 'red']
Run Code Online (Sandbox Code Playgroud)
我想按此自定义排序列表对这两个列表进行排序: ['red','blue','green','alpha']
这样mylist1 = ['green', 'alpha']
和mylist2 = ['red','blue','alpha']
我怎么能用Python做到这一点?
Cla*_*diu 11
示范:
>>> 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']
Run Code Online (Sandbox Code Playgroud)
说明:
该key参数list.sort使得列表比较,以确定的顺序key(element)来代替element.例如,要进行不区分大小写的排序,可以传递一个key使字符串为小写的函数.比较小写元素,但保留原始元素:
>>> x = ["age", "Bonkers", "cheese"]
>>> x.sort()
>>> x
['Bonkers', 'age', 'cheese']
>>> str.lower("Bonkers")
'bonkers'
>>> x.sort(key=str.lower)
>>> x
['age', 'Bonkers', 'cheese']
Run Code Online (Sandbox Code Playgroud)
使用sort_order.indexfor key使用元素在sort_order列表中具有的索引来确定顺序而不是元素本身.所以'red'使用0,'blue'使用1等...结果是要排序的列表根据每个元素所在的位置进行排序sort_order.