In [1]:
l = ['Banana', 'Alice', 'Apple', 'Bob']
In [2]:
print(sorted(l))
In [3]:
print(sorted(l, reverse=True))
In [4]:
l_order = ['Alice', 'Bob', 'Apple', 'Banana']
In [5]:
print(sorted(l, key=l_order.index))
In [6]:
print(l)
In [7]:
print([l_order.index(s) for s in l])
In [8]:
print(sorted(l, key=l_order.index))
In [9]:
d_order = {'Alice': 0, 'Bob': 1, 'Apple': 2, 'Banana': 3}
In [10]:
print(sorted(l, key=lambda x: d_order[x]))
In [11]:
l = ['Banana', 'Alice', 'Apple', 'Bob', 'xxx']
l_order = ['Alice', 'Bob', 'Apple', 'Banana']
In [12]:
# print(sorted(l, key=l_order.index))
# ValueError: 'xxx' is not in list
In [13]:
print(sorted(l, key=lambda x: l_order.index(x) if x in l_order else -1))
In [14]:
print(sorted(l, key=lambda x: l_order.index(x) if x in l_order else float('inf')))
In [15]:
def my_index(x):
l_order = ['Alice', 'Bob', 'Apple', 'Banana']
return l_order.index(x) if x in l_order else -1
In [16]:
print(sorted(l, key=my_index))
In [17]:
l = ['Banana', 'Alice', 'Apple', 'Bob']
l_order = ['Alice', 'Bob', 'Apple', 'Banana', 'xxx']
In [18]:
print(sorted(l, key=l_order.index))
In [19]:
l = ['Banana', 'Alice', 'Apple', 'Bob', 'xxx']
d_order = {'Alice': 0, 'Bob': 1, 'Apple': 2, 'Banana': 3}
In [20]:
# print(sorted(l, key=lambda x: d_order[x]))
# KeyError: 'xxx'
In [21]:
print(sorted(l, key=lambda x: d_order.get(x, -1)))
In [22]:
print(sorted(l, key=lambda x: d_order.get(x, float('inf'))))
In [23]:
l = ['Banana', 'Alice', 'Apple', 'Bob']
d_order = {'Alice': 0, 'Bob': 1, 'Apple': 2, 'Banana': 3, 'xxx': 4}
In [24]:
print(sorted(l, key=lambda x: d_order[x]))