【发布时间】:2013-10-12 19:25:24
【问题描述】:
def mkEntry(file1):
for line in file1:
lst = (line.rstrip().split(","))
print("Old", lst)
print(type(lst))
lst = tuple(lst)
print(type(lst)) #still showing type='list'
print("Old2", lst)
sorted(lst, key=operator.itemgetter(1,2))
def main():
openFile = 'yob' + input("Enter the year <Do NOT include 'yob' or .'txt' : ") + '.txt'
file1 = open(openFile)
mkEntry(file1)
main()
我收到的错误:
Traceback (most recent call last):
File "/Users/ranbir/Desktop/names/top101.py", line 20, in <module>
main()
File "/Users/ranbir/Desktop/names/top101.py", line 18, in main
mkEntry(file1)
File "/Users/ranbir/Desktop/names/top101.py", line 12, in mkEntry
sorted(lst, key=operator.itemgetter(1,2))
IndexError: string index out of range
文件:
Tom,M,1658
Anthony,M,985
Lisa,F,88976
Ben,M,6989
Shelly,F,8975
我需要帮助将顺序从F 排序到M,然后从最小数字到最大数字。输出应如下所示:
Shelly,F,8975
Lisa,F,8976
Ben,M,698
Anthony,M,985
Tom,M,1658
所以基本上,女性首先是最小到最大的数字,然后是男性,然后是最小到最大的数字(M=male,f=female)。
【问题讨论】:
-
lst只是 一个 行;一个元组。不是元组列表。您正在尝试对('Shelly', 'F', '8975')进行排序。 -
糟糕,它应该在 for 循环之外。我更新了。
-
Ben,M,6989输入,Ben,M,698输出? -
请注意,即使在 Objective-C 中,如果您在循环内设置一个变量,然后在循环之后和循环外使用该变量调用一个函数,您只会对循环的最后一个值进行操作.同样,如果您调用的函数没有就地执行并且不对返回值做任何事情,那么代码也不会按照您的预期进行。
-
我忘了把'return'放进去。