Как я могу отсортировать его по индивидуальному заказу?
Вход:
[
{value: "typeA"},
{value: "typeC"},
{value: "typeB"},
{value: "typeC"},
{value: "typeB"},
{value: "typeA"}
]
Ожидайте результата:
[
{value: "typeB"},
{value: "typeB"},
{value: "typeC"},
{value: "typeC"},
{value: "typeA"},
{value: "typeA"}
]
my_own_order = ['typeB', 'typeC', 'typeA']
Мой код Python сейчас выглядит следующим образом:
result = sorted(input, key=lambda v:v['value'])
3 ответа
>>> lst = [
... {'value': "typeA"},
... {'value': "typeC"},
... {'value': "typeB"},
... {'value': "typeC"},
... {'value': "typeB"},
... {'value': "typeA"}
... ]
>>> my_own_order = ['typeB', 'typeC', 'typeA']
Сделайте отображение между typeB
, typeC
, typeA
на 0, 1, 2
>>> order = {key: i for i, key in enumerate(my_own_order)}
>>> order
{'typeA': 2, 'typeC': 1, 'typeB': 0}
И использовать сопоставление для сортировки ключей:
>>> sorted(lst, key=lambda d: order[d['value']])
[{'value': 'typeB'},
{'value': 'typeB'},
{'value': 'typeC'},
{'value': 'typeC'},
{'value': 'typeA'},
{'value': 'typeA'}]
Принимая вход и установить порядок в my_order, и он будет печатать в этом порядке
enter code here
user_input = input()
my_order = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1357902468'
print(*sorted(user_input, key=my_order.index),sep='')
Попробуй это:
sorted(input, key=lambda v: my_own_order.index(v['value']))
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.