Sort elements with specific order in python

前端 未结 3 451
我寻月下人不归
我寻月下人不归 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'}]
    
    0 讨论(0)
  • 2020-12-06 02:44

    Try this:

    sorted(input, key=lambda v: my_own_order.index(v['value']))
    
    0 讨论(0)
  • 2020-12-06 02:47

    Taking an input and set the order in my_order and it will print in that order

    enter code here
    
    user_input = input()
    my_order = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1357902468'
    print(*sorted(user_input, key=my_order.index),sep='')
    
    0 讨论(0)
提交回复
热议问题