Как сортировать рандомный список?

Всем привет. Юзер вводит определенные данные из которых создается список. Но вводит их в рандомном порядке. Например, получается список:

['name', 'age', 'id ', 'hobbies']

А мне в итоге нужно отсортировать этот список так, чтобы получилось:

['id', 'name', 'age', 'hobbies']

Я сделал так, чтобы это сортировалось циклом for, создавая при этом новый список. Но мне кажется, что это костыльный способ. Может есть что-то проще?

PS: Извиняюсь, что без кода (с телефона пишу) Но, надеюсь, проблема понятна


Ответы (1 шт):

Автор решения: Namerek
from random import shuffle

a = ['name', 'age', 'id', 'hobbies']


def sort_key(val):
    return {
        'id': 0,
        'name': 1,
        'age': 2,
        'hobbies': 3
    }.get(val)


for _ in range(10):
    shuffle(a)
    print(a)
    a.sort(key=sort_key)
    print(a)
    print('-------------------------')
['age', 'hobbies', 'id', 'name']
['id', 'name', 'age', 'hobbies']
-------------------------
['name', 'id', 'age', 'hobbies']
['id', 'name', 'age', 'hobbies']
-------------------------
['id', 'hobbies', 'age', 'name']
['id', 'name', 'age', 'hobbies']
-------------------------
['name', 'hobbies', 'id', 'age']
['id', 'name', 'age', 'hobbies']
-------------------------
['id', 'hobbies', 'age', 'name']
['id', 'name', 'age', 'hobbies']
-------------------------
['name', 'id', 'hobbies', 'age']
['id', 'name', 'age', 'hobbies']
-------------------------
['age', 'name', 'id', 'hobbies']
['id', 'name', 'age', 'hobbies']
-------------------------
['id', 'age', 'hobbies', 'name']
['id', 'name', 'age', 'hobbies']
-------------------------
['age', 'hobbies', 'name', 'id']
['id', 'name', 'age', 'hobbies']
-------------------------
['age', 'id', 'hobbies', 'name']
['id', 'name', 'age', 'hobbies']
-------------------------
→ Ссылка