我想用复合键对文件进行排序。我正在使用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
答案 0 :(得分:2)
itemgetter()
将整数作为参数,而不是range()
对象。使用*
让Python扩展range()
生成的整数以分隔参数:
itemgetter(*range(start1, end1))
考虑到不会包含end1
值;您的范围将选择索引为2
和3
的商品:
>>> from operator import itemgetter
>>> row = ['foo', 'bar', 'baz', 'spam', 'ham', 'eggs']
>>> itemgetter(*range(2, 4))(row)
('baz', 'spam')