Sorting a tuple that contains tuples

前端 未结 4 840
星月不相逢
星月不相逢 2020-11-30 03:28

I have the following tuple, which contains tuples:

MY_TUPLE = (
    (\'A\',\'Apple\'),
    (\'C\',\'Carrot\'),
    (\'B\',\'Banana\'),
)

I\

相关标签:
4条回答
  • 2020-11-30 04:11
    from operator import itemgetter
    
    MY_SORTED_TUPLE = tuple(sorted(MY_TUPLE, key=itemgetter(1)))
    

    or without itemgetter:

    MY_SORTED_TUPLE = tuple(sorted(MY_TUPLE, key=lambda item: item[1]))
    
    0 讨论(0)
  • 2020-11-30 04:14

    From Sorting Mini-HOW TO

    Often there's a built-in that will match your needs, such as str.lower(). The operator module contains a number of functions useful for this purpose. For example, you can sort tuples based on their second element using operator.itemgetter():

    >>> import operator 
    >>> L = [('c', 2), ('d', 1), ('a', 4), ('b', 3)]
    >>> map(operator.itemgetter(0), L)
    ['c', 'd', 'a', 'b']
    >>> map(operator.itemgetter(1), L)
    [2, 1, 4, 3]
    >>> sorted(L, key=operator.itemgetter(1))
    [('d', 1), ('c', 2), ('b', 3), ('a', 4)]
    

    Hope this helps.

    0 讨论(0)
  • 2020-11-30 04:15

    I achieved the same thing using this code, but your suggestion is great. Thanks!

    templist = [ (line[1], line) for line in MY_TUPLE ] 
    templist.sort()
    SORTED_MY_TUPLE = [ line[1] for line in templist ]
    
    0 讨论(0)
  • 2020-11-30 04:19
    sorted(my_tuple, key=lambda tup: tup[1])
    

    In other words, when comparing two elements of the tuple you're sorting, sort based on the return value of the function passed as the key parameter.

    0 讨论(0)
提交回复
热议问题