Python 从元组排序-索引超出范围

Python 从元组排序-索引超出范围,python,sorting,indexing,Python,Sorting,Indexing,我需要帮助将顺序从F排序到M再从最小数排序到最大数。输出应如下所示: Tom,M,1658 Anthony,M,985 Lisa,F,88976 Ben,M,6989 Shelly,F,8975 因此,基本上,女性先是从最小到最大的数字,然后是男性,然后是从最小到最大的数字(M=male,f=female)。您在循环中不断重新分配lst: Shelly,F,8975 Lisa,F,8976 Ben,M,698 Anthony,M,985 Tom,M,1658 您没有建立所有条目的最终列表。您

我需要帮助将顺序从
F
排序到
M
再从最小数排序到最大数。输出应如下所示:

Tom,M,1658
Anthony,M,985
Lisa,F,88976
Ben,M,6989
Shelly,F,8975

因此,基本上,女性先是从最小到最大的数字,然后是男性,然后是从最小到最大的数字(
M=male
f=female
)。

您在循环中不断重新分配
lst

Shelly,F,8975
Lisa,F,8976
Ben,M,698
Anthony,M,985
Tom,M,1658
您没有建立所有条目的最终列表。您需要一个单独的列表对象:

for line in file1:
    lst = (line.rstrip().split(","))
    lst = tuple(lst)

sorted(lst, key=operator.itemgetter(1,2))
请注意,您还需要返回已排序的列表

这仍然不会达到您期望的效果,因为您的最后一个元素(在索引2中)仍然是一个字符串<代码>'10'将在
'91234'
之前排序,因为字符串是按字母顺序排序的。将其改为数字:

results = []
for line in file1:
    lst = line.rstrip().split(",")
    lst = tuple(lst)
    results.append(lst)

return sorted(results, key=operator.itemgetter(1,2))

lst
只是一行;一个元组。不是元组列表。您正在尝试对
('Shelly','F','8975')
进行排序。哎呀,假设它在for循环之外。我更新了。
Ben,M,6989
在输入中,
Ben,M,698
在输出中?请注意,即使在Objective-C中,如果您在循环内设置一个变量,然后在循环后和循环外使用该变量调用函数,您也只能对循环的最后一个值执行操作。类似地,如果您调用一个没有执行到位且没有对返回值执行任何操作的函数,那么代码将不会执行您所期望的操作。我忘了输入“return”。在您的第三个代码中,它显示了错误:
lst[2]=float(lst[2])indexer:list index超出范围
oops,我的文本文件中有输入空间。它起作用了。非常感谢。
for line in file1:
    lst = (line.rstrip().split(","))
    lst = tuple(lst)

sorted(lst, key=operator.itemgetter(1,2))
results = []
for line in file1:
    lst = line.rstrip().split(",")
    lst = tuple(lst)
    results.append(lst)

return sorted(results, key=operator.itemgetter(1,2))
results = []
for line in file1:
    lst = line.rstrip().split(",")
    lst[2] = int(lst[2])
    lst = tuple(lst)
    results.append(lst)

return sorted(results, key=operator.itemgetter(1,2))