排序一些代码,我需要缩短它

时间:2015-03-12 14:45:58

标签: sorting python-3.x

  fd = open('Class1.txt')
  lines = [line.strip() for line in fd]
  s = {}
  for line in lines:
    splitted = [i for i in line.split(',')]
    key = splitted[0]
    s[key] = [int(n) for n in splitted[1:]]
  def average():
          avg_mark = lambda name:sum(s[name])/len(s[name])
          for i in sorted(s.keys(),key=avg_mark,reverse=True):
              print (i,avg_mark(i),"\n")
          average()
          average()
  average()

是的,所以我已经改变了代码,所以它只是平均值,但是当我运行它时它不停止任何人都可以帮助我。 感谢

我需要帮助缩短这段代码,因为它太长了。我还需要为其他三个类做这个,并且不希望它成为代码行,如果可以缩短则只是徘徊。

由于

1 个答案:

答案 0 :(得分:0)

以下是我认为你之后的事情:

import csv

with open('Class1.txt') as fd:
    s = {row[0]:[int(n) for n in row[1:]] for row in csv.reader(fd, delimiter=',')}

def average():
    avg_mark = lambda name : sum(s[name])/len(s[name])
    for name in sorted(s, key=avg_mark, reverse=True):
        print(name, avg_mark(name))  # newline prints automatically

当然,实际上,由于average内的average号召唤,您将遇到maxrecursiondepth个问题。因此,如果你真的想要代码来做这件事,你也可以这样做:

def f(): f()