2016-07-19 14 views
0

私はかなり新しい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に関連する前に印刷されているので、私は何とかキー組み合わせることができれば、もちろん、私はわからないよ= itemgetter:私は現在、次のようになり、コードを持っていますx)をkey = intに設定して問題を解決してください。

答えて

3

私は小さなラムダ関数を書くことはあなたが行うことができるでしょう最善であると思う:

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')] 
関連する問題