Python 按字母顺序对键及其匹配值进行排序
我有一个包含名称和值的文本文件,键入方式如下: 我试着按字母顺序从文件中“打印”出来,但我也需要去掉重复的,只显示每个名字的最高分数。我已经开始了,但似乎不起作用。我正在使用python 3.4.1Python 按字母顺序对键及其匹配值进行排序,python,list,sorting,alphabetical,Python,List,Sorting,Alphabetical,我有一个包含名称和值的文本文件,键入方式如下: 我试着按字母顺序从文件中“打印”出来,但我也需要去掉重复的,只显示每个名字的最高分数。我已经开始了,但似乎不起作用。我正在使用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 s
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()
您可以使用字典和方法保留姓名和分数,然后打印每个姓名的最大分数:
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))
请注意,如果您的分数可能是float,您需要在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)
然后,您可以使用sortedd.keys进行迭代。调用readlines和其中一个元素line的结果会更直观,而不是像在代码中那样调用readlines的结果。@VigneshKalai,正如您所说,它返回值,这里的值是一个列表,因此您可以向其中添加任何内容;如何“打印”它,使值保留在正确的键上?钥匙仍按字母顺序排列时?请参阅以获取多种解决方案
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)