如何使用Python计算文件中“1 1”、“1 1”、“1 1”和“1 1”的出现次数?

2024-09-30 01:29:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据文件包含以下格式的值:

1 1
-1 1
1 -1
-1 -1
...

每次我注意到这些情况时,我都需要计算一个变量的增量。例如,PositiveNegative += 1当我遇到1 -1NegativeNegative += 1当我遇到-1 -1。你知道吗

到目前为止,我有:

PositivePositive = 0
f1 = open("200_sample.txt", 'r')
v = f1.read()
for line in v:
    if "1 1" in line:
        PositivePositive +=1

但是它不计算任何1 1的出现。有什么建议吗?你知道吗


Tags: sampleintxtforread数据文件格式line
2条回答

可以使用带有for循环的默认字典

from collections import defaultdict

myfile = open("thefile.txt")

mycountdict = defaultdict(lambda: 0)

for line in myfile.readlines():
    mycountdict[line] += 1

然后只printreturn来自defaultdict的所需输出

print(mycountdict["1 1\n"])

当您执行v = f1.read()时,它将文件的所有内容读入一个长字符串,称为v。当你用for line in v:遍历它时,它一次只看一个字符。所以,当然,它不会在一个字符中找到三个字符。你知道吗

要解决这个问题,只需不read()文件对象。您可以直接迭代,文件读取器将逐行迭代:

lines = {'-1 1':0, '1 -1':0, '1 1':0, '-1 -1':0}
with open("200_sample.txt", 'r') as f:
    for line in f:
        lines[line.strip()] += 1

此外,使用with上下文管理器在该块结束后自动关闭文件。你知道吗

可以将每种类型的行存储为字典键,然后在看到该键时更新该键的值。你知道吗

相关问题 更多 >

    热门问题