按字段数字对命名元组列表进行排序
Sorting a list of named tuples by field numercially
我刚开始使用 python。我有一个命名元组列表,我想按其中一个字段进行数字排序。我目前的代码看起来像这样:
from collections import namedtuple
testTuple = namedtuple("test", "name, number")
from operator import itemgetter
testList = []
seq = [testTuple(name = 'abc', number = '123'),
testTuple(name = 'xyz', number = '32'),
testTuple(name = 'def', number = '322')]
print(sorted(seq, key= itemgetter(1)))
但是当然,因为 itemgetter 按字母顺序排序,与 123 关联的元组在与 32 关联的元组之前打印。我不确定我是否可以以某种方式将 key=itemgetter(x) 与 key=int 结合来解决我的问题。
我认为最好编写一个小的 lambda 函数:
from collections import namedtuple
testTuple = namedtuple("test", ("name", "number"))
seq = [testTuple(name = 'abc', number = '123'),
testTuple(name = 'xyz', number = '32'),
testTuple(name = 'def', number = '322')]
print(sorted(seq, key=lambda x: int(x[1])))
# Output:
# [test(name='xyz', number='32'), test(name='abc', number='123'), test(name='def', number='322')]
我刚开始使用 python。我有一个命名元组列表,我想按其中一个字段进行数字排序。我目前的代码看起来像这样:
from collections import namedtuple
testTuple = namedtuple("test", "name, number")
from operator import itemgetter
testList = []
seq = [testTuple(name = 'abc', number = '123'),
testTuple(name = 'xyz', number = '32'),
testTuple(name = 'def', number = '322')]
print(sorted(seq, key= itemgetter(1)))
但是当然,因为 itemgetter 按字母顺序排序,与 123 关联的元组在与 32 关联的元组之前打印。我不确定我是否可以以某种方式将 key=itemgetter(x) 与 key=int 结合来解决我的问题。
我认为最好编写一个小的 lambda 函数:
from collections import namedtuple
testTuple = namedtuple("test", ("name", "number"))
seq = [testTuple(name = 'abc', number = '123'),
testTuple(name = 'xyz', number = '32'),
testTuple(name = 'def', number = '322')]
print(sorted(seq, key=lambda x: int(x[1])))
# Output:
# [test(name='xyz', number='32'), test(name='abc', number='123'), test(name='def', number='322')]