这有点难以解释。所以,我有一个文本文件“People.txt”,其中包含以下内容:
Jonathan,7,
Laura,11,
Bethany,21,
Jonathan,8,
Ashley,10,
Jonathan,14,
Rachel,10,
Jonathan,5,
我要做的是在文件中查找特定名称的匹配项,并从总共50个中减去与该名称对应的数字。
这里的重点是Jonathan在文件中有多个条目。目前,我的代码在文件中查找匹配项,并从50中减去该数字。问题是它没有考虑到第一个匹配项已被“使用”。
(让我们把被搜索的名字变成乔纳森)
name = "Jonathan"
total = 50
with open("People.txt","r") as file:
for line in file:
info = line.split(",")
if name == info[0]:
total -= info[1]
我不确定这个例子是否真的可以用来描述问题,因为我发现很难解释这个问题。所以也许只是忽略它/使用它作为我想要做的一般想法。
基本上我遇到的问题是我的真实代码(这里的代码只是一个简化的例子,因为我不想在这里发布真实的东西)只考虑每次的第一场比赛。 但基本上,我如何确保程序每次都进入下一场比赛?也许这样它可以计算文件中有多少匹配,并且每次从总数中减去,在迭代文件期间到达下一个匹配时移动到下一个匹配。
对不起,如果这没有用。不确定要使用的示例代码。谢谢你的帮助。
答案 0 :(得分:0)
很难回答,因为你的代码似乎很好,它应该在第一场比赛后继续寻找,并为所有比赛减去。但无论如何,这是另一个概念解决方案:
如果您将文件读入字典,则可以使用filter和reduce来查找和减去匹配。
from functools import reduce
name = "Jonathan"
total = 50
namelist = []
with open("People.txt","r") as file:
for line in file:
info = line.split(",")
namelist.append((info[0], int(info[1]))
result = 50 - reduce(lambda x, y: x[1] + y[1], filter(lambda x: x[0] == name, namelist))