Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python帮助。在文件中查找最大值并打印值w name_Python_Text Files_Return Value_Filereader - Fatal编程技术网

Python帮助。在文件中查找最大值并打印值w name

Python帮助。在文件中查找最大值并打印值w name,python,text-files,return-value,filereader,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] h

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

该文件包含以下信息:

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)
打印出以下内容:

时间最长的人是胡安

时间最长的人是迈克


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

虽然你第一次尝试的努力令人印象深刻,但你在这里无法做到的是。。跟踪名称,同时跟踪最大值!我相信这可以用你的方式来做,但我可以建议一个替代方案吗

import operator
让我们像我一样读入这个文件。这是一个很好的实践,此方法处理文件关闭,如果操作不当,可能会导致许多问题

with open('/Users/abhishekbabuji/Desktop/example.txt', 'r') as fh:
    lines = fh.readlines()
现在我有了一个名为
的列表中的每一行,其中也有这个恼人的
\n
。让我们将其替换为空白
'

现在我们有一个这样的列表
['Name1,Value1','Name2,Value2'…]
我现在要做的是,对于列表中的每个字符串项,将第一部分作为键,将第二部分的整数部分作为名为
示例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])    

你已经取得了一些好的进展,但是有几个问题你需要考虑。1.修正你在这个问题上的缩进。2.您正在为文件中的每一行重置
LHRS=0
,这会打乱您的算法。3.
LHRS==LHRS
始终为真。4.你需要记录某处工作时间最多的人的姓名。5.您只想在程序结束时打印一次此人,但是你把代码放在一个循环中,这意味着它可能会在结束之前发生很多次。对于学习编码和算法的人来说,这种方法太高了。@AlexHall这个家伙在逐行阅读时试图在一个for循环中找到
max
值。。这对我来说是高水平的!这甚至让我停下来想一想works@Abhishek问题:我该如何编辑代码,使其能够打印出多个名称(如果它们具有相同数量的最大名称)hours@NathanMndz检查我对旧答案的新编辑。我刚刚更新了它。如果你对它感到满意,请向上投票并选择它为“接受”(勾号)@NathanMndz你也可以向上投票。如果你愿意
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])