当前位置: 首页 > 面试题库 >

通过字段名对namedtuple列表进行排序的Pythonic方法

赫连越
2023-03-14
问题内容

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

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'))


 类似资料:
  • rank ▲ ✰ vote url 49 432 198 616 url 通过列表中字典的值对列表进行排序 我的到了一个字典的列表,我想对字典的值进行排序. [{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}] 对name进行排序,应当是: [{'name':'Bart', 'age':10}, {'name':'Homer', 'age

  • 问题内容: 我有一个列表列表(由于必须动态生成它,所以不能是元组),它的结构为一个int和一个float的列表列表,像这样: 我想对它进行排序,但我只能设法获得内置的排序功能,以便按列表的第一个元素对其进行排序,或者什么也不做,但是我需要按列表的第二个元素对它们进行排序,但是我没有不想实现我自己的排序功能。所以我想要的一个例子是: 有人可以告诉我如何获取内置的排序功能之一来执行此操作吗? 问题答案

  • 问题内容: 我有一个Java对象列表,希望根据多个字段进行排序。 是否可以使用或接口根据多个字段对列表进行排序?我看到的所有示例仅根据一个领域进行排序。换句话说,可以按“校园”或“教师”或“建筑”进行排序。我想按“校园”,“教师”,“建筑”(因为它在SQL中存在)进行排序 问题答案: 您的比较器如下所示: 基本上,只要到目前为止已比较的属性相等(),它就会继续比较类的每个连续属性。

  • 问题内容: 我有一个从排序的csv创建的以下列表 我实际上想按两个条件对列表进行排序:首先按字段1中的值,然后按字段2中的值。我该怎么做? 问题答案: 像这样:

  • 我的软件上有一个对象列表,我想通过一个公共字段进行排序,例如: 我可以对列表进行排序以使ID=1的对象只出现一次吗?在这种情况下,列表中只剩下ID=1的第一个对象,例如: 我怎样才能做到这一点?

  • 问题内容: 仍在学习python(最后!),还不能完全绕过这个问题。我想做的是使用列表中的第三项按值对列表字典进行排序。当值只是一个数字或字符串时,按值对字典排序很容易,但是这个列表让我感到困惑。 例: 我希望能够按每个列表中第三个值的顺序遍历字典,在这种情况下为9、3、11。 非常感谢您的帮助! 问题答案: 这是执行此操作的一种方法: 该参数的的功能,可以让您导出列表中的每个元素的排序键。 要遍