'Sort a list with a custom order in Python
I have a list
mylist = [['123', 'BOOL', '234'], ['345', 'INT', '456'], ['567', 'DINT', '678']]
I want to sort it with the order of 1. DINT 2. INT 3. BOOL
Result:
[['567', 'DINT', '678'], ['345', 'INT', '456'], ['123', 'BOOL', '234']]
I've seen other similar questions in stackoverflow but nothing similar or easily applicable to me.
Solution 1:[1]
Another way could be; set your order in a list:
indx = [2,1,0]
and create a new list with your order wished:
mylist = [mylist[_ind] for _ind in indx]
Out[2]: [['567', 'DINT', '678'], ['345', 'INT', '456'], ['123', 'BOOL', '234']]
Solution 2:[2]
Since that is not in aphabetical order I don't think there is one single function that can sort it but what you could do is create a new list and then append. This is kind of a cheap method of doing it; but it gets the job done.
newlist=[];
for sub_list in mylist:
if(sub_list[1] == 'DINT']):
newlist.append(sub_list);
for sub_list in mylist:
if(sub_list[1] == 'INT']):
newlist.append(sub_list);
for sub_list in mylist:
if(sub_list[1] == 'BOOL']):
newlist.append(sub_list);
Solution 3:[3]
python 3.2
1. sorted(mylist,key=lambda x:x[1][1])
2. sorted(mylist,reverse=True)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | |
| Solution 3 |
