用Pythonic方法按字段名称对namedtuple列表进行排序的方法 [英] Pythonic way to sorting list of namedtuples by field name

查看:160
本文介绍了用Pythonic方法按字段名称对namedtuple列表进行排序的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想对命名元组的列表进行排序,而不必记住字段名的索引.我的解决方案似乎很尴尬,希望有人能提供一个更优雅的解决方案.

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 elegant solution.

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(Person._fields.index('name'))))
# sort list by age
print(sorted(seq, key=itemgetter(Person._fields.index('age'))))

谢谢, 尼克

推荐答案

from operator import attrgetter
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)]

按名称对列表进行排序

sorted(seq, key=attrgetter('name'))

按年龄排序列表

sorted(seq, key=attrgetter('age'))

这篇关于用Pythonic方法按字段名称对namedtuple列表进行排序的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆