按字母顺序排序键及其匹配值

2024-05-23 23:07:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含名称和值的文本文件,键入如下:

Sam:3 
Ben:6
Ben:5
Alice:7

我试图'打印'从文件中按字母顺序,但我也需要摆脱重复,只显示每个名字的最高分。我已经开始了,但似乎不起作用。我使用的是python3.4.1。你知道吗

AClass1=open("Class1.txt") 
line=AClass1.readlines() 
for lines in line: 
    key=lines.split(":")[0] 
    val=lines.split(":")[1] 
    for names in sorted(key): 
        print(names,":",val) 
        AClass1.close()

Tags: keyin名称for键入namessamline
2条回答

您可以使用字典(和dict.setdefault方法)保存您的姓名和分数,然后打印每个姓名的最大分数:

d={}
with open("Class1.txt") as f :

   for line in f:
      for i,j in [t.split(':') for t in line.split()]:
        d.setdefault(i,[]).append(int(j))

for i,j in d.iteritems():
   print '{}:{}'.format(i,max(j))

注意如果你的分数可能是浮动的,你需要在append方法中使用float而不是int。你知道吗

我的版本是(假设每个条目都在新行上):

d = {}
with open('file.txt') as f:
  for line in f.readlines():
    k, v = line.strip().split(":")
    if (k not in d) or d[k] < int(v):
      d[k] = int(v)

然后可以使用排序的(d.keys)进行迭代。你知道吗

相关问题 更多 >