2016-01-25 48 views
0

我想使用組合鍵對文件進行排序。我正在使用itemgetter()對象與range()函數對幾個列進行排序,從起點到終點選擇。下面是我的代碼:如何使用基於範圍的組合鍵對文件進行排序()

start1 = 2 
end1 = 4 
sort_src = sorted(file_name, key=itemgetter(range(int(start1), int(end1)))) 

這就提出了一個例外:

TypeError: list indices must be integers, not list 

回答

2

itemgetter()採用整數作爲參數,而不是一個range()對象。使用*有Python的擴大range()產生分隔參數整數:

itemgetter(*range(start1, end1)) 

考慮到該end1值是不會被包括在內;您的範圍將選擇索引爲23的項目:

>>> from operator import itemgetter 
>>> row = ['foo', 'bar', 'baz', 'spam', 'ham', 'eggs'] 
>>> itemgetter(*range(2, 4))(row) 
('baz', 'spam') 
相關問題