In [1]:
l = ['Banana', 'Alice', 'Apple', 'Bob']

In [2]:
print(sorted(l))


['Alice', 'Apple', 'Banana', 'Bob']

In [3]:
print(sorted(l, reverse=True))


['Bob', 'Banana', 'Apple', 'Alice']

In [4]:
l_order = ['Alice', 'Bob', 'Apple', 'Banana']

In [5]:
print(sorted(l, key=l_order.index))


['Alice', 'Bob', 'Apple', 'Banana']

In [6]:
print(l)


['Banana', 'Alice', 'Apple', 'Bob']

In [7]:
print([l_order.index(s) for s in l])


[3, 0, 2, 1]

In [8]:
print(sorted(l, key=l_order.index))


['Alice', 'Bob', 'Apple', 'Banana']

In [9]:
d_order = {'Alice': 0, 'Bob': 1, 'Apple': 2, 'Banana': 3}

In [10]:
print(sorted(l, key=lambda x: d_order[x]))


['Alice', 'Bob', 'Apple', 'Banana']

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))


['xxx', 'Alice', 'Bob', 'Apple', 'Banana']

In [14]:
print(sorted(l, key=lambda x: l_order.index(x) if x in l_order else float('inf')))


['Alice', 'Bob', 'Apple', 'Banana', 'xxx']

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))


['xxx', 'Alice', 'Bob', 'Apple', 'Banana']

In [17]:
l = ['Banana', 'Alice', 'Apple', 'Bob']
l_order = ['Alice', 'Bob', 'Apple', 'Banana', 'xxx']

In [18]:
print(sorted(l, key=l_order.index))


['Alice', 'Bob', 'Apple', 'Banana']

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)))


['xxx', 'Alice', 'Bob', 'Apple', 'Banana']

In [22]:
print(sorted(l, key=lambda x: d_order.get(x, float('inf'))))


['Alice', 'Bob', 'Apple', 'Banana', 'xxx']

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]))


['Alice', 'Bob', 'Apple', 'Banana']