【问题标题】:Sorting a list of named tuples by field numercially按字段对命名元组列表进行数字排序
【发布时间】:2016-07-19 04:25:40
【问题描述】:

我对使用 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 结合来解决我的问题。

【问题讨论】:

    标签: python sorting namedtuple


    【解决方案1】:

    我认为最好编写一个小的 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')]
    

    【讨论】:

      猜你喜欢
      • 2012-08-18
      • 2018-10-24
      • 2015-01-28
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多