在python中按特定顺序对元素排序

2024-09-29 02:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我怎样才能按定单分类呢?

输入:

[
    {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'])

Tags: lambdakey代码inputvaluemy分类order
3条回答

输入并按我的顺序设置顺序,它将按该顺序打印

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']))
>>> lst = [
...     {'value': "typeA"},
...     {'value': "typeC"},
...     {'value': "typeB"},
...     {'value': "typeC"},
...     {'value': "typeB"},
...     {'value': "typeA"}
... ]
>>> my_own_order = ['typeB', 'typeC', 'typeA']

typeBtypeCtypeA与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'}]

相关问题 更多 >