Sort elements with specific order in python

前端 未结 3 450
我寻月下人不归
我寻月下人不归 2020-12-06 02:03

How can I sort it by custom order?

Input:

[
    {value: \"typeA\"},
    {value: \"typeC\"},
    {value: \"typeB\"},
    {value: \"typeC\"},
    {valu         


        
3条回答
  •  情深已故
    2020-12-06 02:43

    >>> lst = [
    ...     {'value': "typeA"},
    ...     {'value': "typeC"},
    ...     {'value': "typeB"},
    ...     {'value': "typeC"},
    ...     {'value': "typeB"},
    ...     {'value': "typeA"}
    ... ]
    >>> my_own_order = ['typeB', 'typeC', 'typeA']
    

    Make a mapping between typeB, typeC, typeA to 0, 1, 2

    >>> order = {key: i for i, key in enumerate(my_own_order)}
    >>> order
    {'typeA': 2, 'typeC': 1, 'typeB': 0}
    

    And use the mapping for sorting key:

    >>> sorted(lst, key=lambda d: order[d['value']])
    [{'value': 'typeB'},
     {'value': 'typeB'},
     {'value': 'typeC'},
     {'value': 'typeC'},
     {'value': 'typeA'},
     {'value': 'typeA'}]
    

提交回复
热议问题