Python帮助。在文件中查找最大值并打印出带有名称的值

时间:2018-10-05 22:46:14

标签: python text-files return-value filereader

我需要创建一个程序来打开文件,然后读取文件中的值,然后打印出具有最大值的名称。

文件包含以下信息:

Juan,27
Joe,16 
Mike,29
Roy,10

现在我的代码如下:

  UserFile=input('enter file name')
  FileOpen=open(User File,'r')
  for lines in User File:
    data=line.split(",")
    name=data[0]
    hrs=data[1]
    hrs=int(hrs)
    LHRS = 0
    if hrs > LHRS:
    LHRS = hrs
    if LHRS == LHRS:
        print('Person with largest hours is',name)

以下内容打印出来:

上班时间最多的人是胡安

上班时间最多的人是迈克

我怎样才能使它只打印出真正的最大的?

1 个答案:

答案 0 :(得分:2)

虽然您初次尝试的努力令人印象深刻,但您在这里无法做的是。.跟踪名称,同时跟踪最大值!我确定可以用您的方式完成,但是我可以建议一种替代方法吗?

import operator

让我们像我一样读文件。这是一个好习惯,此方法可以处理文件关闭,如果操作不正确,则可能导致许多问题。

with open('/Users/abhishekbabuji/Desktop/example.txt', 'r') as fh:
    lines = fh.readlines()

现在,我将每行包含在名为lines的列表中,其中也包含此烦人的\n。让我们用空白''

代替
lines = [line.replace("\n", "") for line in lines]

现在我们有一个这样的列表。 ['Name1, Value1', 'Name2, Value2'..]现在要做的是,对于列表中的每个字符串项,将第一部分作为键,将第二部分的整数部分作为字典中名为example_dict的值。因此,在'Name1, Value1'中,Name1是索引0中的项目,而Name2是索引1中我的项目,当我将其变成类似完成以下操作,然后将键值对添加到字典中。

example_dict = {}
for text in lines:
    example_dict[text.split(",")[0]] = int(text.split(",")[1])
print(example_dict)

礼物:

{'Juan': 27, 'Joe': 16, 'Mike': 29, 'Roy': 10}

现在,获取值为max的密钥并打印出来。

largest_hour = max(example_dict.items(), key=operator.itemgetter(1))[1]

highest_key = []
for person, hours in example_dict.items():
    if hours == largest_hour:
        highest_key.append((person, hours))

for pair in highest_key:

    print('Person with largest hours is:', pair[0])