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

Alphabetically sorting keys with their matching values

我有一个名称和值的文本文件,类型如下:

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

我已尝试 'print' 按字母顺序从文件中提取它,但我还需要删除重复项并仅显示每个名称的最高分。我已经开始了,但它似乎不起作用。我正在使用 python 3.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()

您可以使用字典(和 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)

然后您可以使用 sorted(d.keys).

进行迭代