如何使用基于range()的复合键对文件进行排序

时间:2016-01-25 10:34:05

标签: python sorting

我想用复合键对文件进行排序。我正在使用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

1 个答案:

答案 0 :(得分: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')