Python sorted()函数无法正常工作 [英] Python sorted() function not working the way it should
本文介绍了Python sorted()函数无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
基本上我有一个嵌套列表,我正在尝试对第一个索引进行排序 我复制了python howto所说的方法,但是它似乎不起作用,我也不明白为什么:
Basically I have a nested list that I am trying to sort through the 1'st index I copied the way that the python howto says how to do it but it doesn't seem to work and I don't understand why:
代码:
>>> student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
>>> sorted(student_tuples, key=lambda student: student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
我的代码:
def print_scores(self):
try:
#opening txt and reading data then breaking data into list separated by "-"
f = open(appdata + "scores.txt", "r")
fo = f.read()
f.close()
userlist = fo.split('\n')
sheet_list = []
for user in userlist:
sheet = user.split('-')
if len(sheet) != 2:
continue
sheet_list.append(sheet)
sorted(sheet_list, key = lambda ele : ele[1]) #HERE IS THE COPIED PART!
if len(sheet_list) > 20: # only top 20 scores are printed
sheet_list = sheet_list[len(sheet_list) - 21 :len(sheet_list) - 1]
#prints scores in a nice table
print "name score"
for user in sheet_list:
try:
name = user[0]
score = user[1]
size = len(name)
for x in range(0,14):
if x > size - 1:
sys.stdout.write(" ")
else:
sys.stdout.write(name[x])
sys.stdout.write(score + "\n")
except:
print ""
except:
print "no scores to be displayed!"
错误在于所生成的打印列表与txt中的显示方式完全相同,就好像排序功能没有做任何事情一样!
The bug is that the resulting printed list is exactly like how it was in the txt as if the sorting function didn't do anything!
示例:
txt文件中的数据
Jerry-1284
Tom-264
Barry-205
omgwtfbbqhaxomgsss-209
Giraffe-1227
打印内容:
Name Score
Jerry 1284
Tom 264
Barry 205
omgstfbbqhaxom209
Giraffe 1227
推荐答案
sorted
返回新列表.如果要修改现有列表,请使用
sorted
returns a new list. If you want to modify the existing list, use
sheet_list.sort(key = lambda ele : ele[1])
这篇关于Python sorted()函数无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文