Pythonic way to sorting list of namedtuples by field name

后端 未结 5 1442
耶瑟儿~
耶瑟儿~ 2020-12-05 01:21

I want to sort a list of named tuples without having to remember the index of the fieldname. My solution seems rather awkward and was hoping someone would have a more elegan

5条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-05 02:12

    since nobody mentioned using itemgetter(), here how you do using itemgetter().

    from operator import itemgetter
    from collections import namedtuple
    
    Person = namedtuple('Person', 'name age score')
    seq = [
        Person(name='nick', age=23, score=100),
        Person(name='bob', age=25, score=200),
    ]
    
    # sort list by name
    print(sorted(seq, key=itemgetter(0)))
    
    # sort list by age
    print(sorted(seq, key=itemgetter(1)))
    

提交回复
热议问题