student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
我一直在尝试不同的方法来解决这,使用itemgetter和lambda函数的列表。通过元组的两个索引排序可以通过itemgetting和lambda函数完成,但它必须返回一个元组。我似乎无法在文档中找到关键函数在元组上运行的任何地方。
无论如何,我想知道itemgetter()实际返回,所以此工程(从itemgetter文档复制):
f = itemgetter(1)
print f(student_tuples[0])
----->A
有没有办法做到这一点,而不必itemgetter重新分配给一个变量?它看起来像两个参数正在通过,但像
print itemgetter(1, student_tuples[0])
-----><operator.itemgetter object at 0xf7309c8c>
不给我任何有用的东西。
我只是在努力学习Python,这让我感到困惑。我不知道itemgetter中的student_tuples [0]被添加为参数。
谢谢,清除它。通常使用itemgetter,attrgetter等,或者使用lambda函数可以使用吗?他们在排序的背景下看起来相当紧凑,但我是一个新手,所以也许还有其他用途,其中itemgetter是远远优于其他用途。 – jktstance
@jktstance:我个人认为其中没有太多内容,但有些人强烈反感lambda,并认为首先在语言中不需要他们。我通常不会为'itemgetter'的单次使用导入'operator',但如果我使用'operator',那么我认为它是值得的。在某些情况下,您可能还想比较两者的表现并选择更快的方式。 –