按字母顺序对键及其匹配值进行排序
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).
进行迭代
我有一个名称和值的文本文件,类型如下:
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).
进行迭代