gpt4 book ai didi

python - 找到匹配的字符串然后+1到元素

转载 作者:行者123 更新时间:2023-11-30 22:20:28 28 4
gpt4 key购买 nike

我正在尝试创建一个循环来遍历二维列表,如果循环找到第一个元素中的匹配字符串,则它将+1 添加到列表的第二个元素。

列表示例:

[[迈克,0],[约翰,2],[亨利,0],[萨姆,1]]

如果所需的搜索是约翰,则会发生这种情况:

[[迈克,0],[约翰,3],[亨利,0],[萨姆,1]]

然后是迈克:

[[迈克,1],[约翰,3],[亨利,0],[萨姆,1]]

在下面的场景中,“name”是需要找到的引入的字符串。

我还从 CSV 文件中提取姓名列表,然后将更新后的列表写回。

我似乎无法让它工作,返回给我的错误是

'TypeError: int() argument must be a string, a bytes-like object or a number, not 'list''

def count(name):
with open('nameList.csv', 'r') as csvfile:
reader = csv.reader(csvfile)
nameList = list(reader)
for x in range(len(nameList)):
if nameList[x][0] == name:
print(nameList== name)
nameList[1] = nameList[1] + 1
with open("nameList.csv", "w", newline='') as f:
writer = csv.writer(f)
for i in nameList:
writer.writerow(i)

关于如何让它发挥作用有什么想法吗?非常感谢!

最佳答案


我相信您试图解决的最初问题是获取名称的计数。

如果是这样的话,那么使用 Python 的 collections 模块中的 Counter 可以更轻松地完成任务。

from collections import Counter

cnt = Counter()
with open("nameList.csv", 'r') as f:
rd = csv.reader(f)
cnt = Counter(r[0] for r in rd)

print(cnt)


cnt 将是类似字典的对象(您可以像任何其他字典一样使用它),其中键是 CSV 中的名称,值是计数。所以,它可能看起来像这样:

{'john': 3, 'mike': 1, 'sam': 1}


现在假设您有另一个包含名称的 CSV,并且您想要查找两个文件中每个名称的计数。您可以通过更新 cnt 轻松完成此操作:

with open("nameList2.csv", 'r') as f:
rd2 = csv.reader(f)
cnt.update(r[0] for r in rd2)

您可以避免从头开始计数并且代码更加性感!简单又优雅!

关于python - 找到匹配的字符串然后+1到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48843120/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com