Python sorted()函数不应该按照它应该的方式工作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python sorted()函数不应该按照它应该的方式工作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1518字,纯文字阅读大概需要3分钟。
内容图文
![Python sorted()函数不应该按照它应该的方式工作](/upload/InfoBanner/zyjiaocheng/698/07451fb6e79b4f51ab39e5d695492d00.jpg)
基本上我有一个嵌套列表,我试图通过第一个索引进行排序
我复制了python howto如何做的方式,但它似乎不起作用,我不明白为什么:
来自网站的代码:
>>> 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中的完全一样,好像排序功能没有做任何事情!
例:
txt文件中的数据:
Jerry-1284
Tom-264
Barry-205
omgwtfbbqhaxomgsss-209
Giraffe-1227
什么印刷:
Name Score
Jerry 1284
Tom 264
Barry 205
omgstfbbqhaxom209
Giraffe 1227
解决方法:
sorted返回一个新列表.如果要修改现有列表,请使用
sheet_list.sort(key = lambda ele : ele[1])
内容总结
以上是互联网集市为您收集整理的Python sorted()函数不应该按照它应该的方式工作全部内容,希望文章能够帮你解决Python sorted()函数不应该按照它应该的方式工作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。