python - 如何从多个文本文件中获取元组列表(第 2 部分:Electric Boogaloo)?
问题描述
由于我的第一个问题不够清楚,我将重写它,使其更清楚(对不起,我在第一个问题中不清楚)。
我有一个包含 46 个子目录的文件夹。每个子目录都有一个 .txt 文件。这些 .txt 文件中的文本行数不同,如下所示:
0
0
0
1
...
1
0
0
1
我想要一个包含 46 个元组的列表(每个子目录 1 个 - 以及每个 .txt 文件),在这些元组中,我想要文本中包含 0 的行数和包含 1 的行数对于该元组分配到的文件。类似这样的东西:
[(17342,2453),(342,127),...,(45003,69),(420,223)]
目前我的代码(不能正常工作)是这样的:
from pathlib import Path
def count_0s(paths):
for p in paths:
list_zeros = []
list_ones = []
for line in p.read_text().splitlines():
zeros = 0
zeros += line.count('0')
ones = 0
ones += line.count('1')
list_zeros.append(zeros)
list_ones.append(ones)
return list_zeros, list_ones
path = "/content/drive/MyDrive/data/classes/"
paths = Path(path).glob("*/marked*.txt")
n_zeros=count_0s(paths)
n_zeros
我需要应用哪些更改,以便我有一个包含元组的列表,而不是 2 个列表?
解决方案
假设您有两个列表,第一个包含 0 的数量,第二个包含 1 的数量,您可以在最后重新排列数据:
n_zeros = [1, 2, 3, 4]
n_ones = [5, 6, 7, 8]
pairs = []
for n_zero, n_one in zip(n_zeros, n_ones):
pairs.append((n_zero, n_one))
print(pairs)
应该返回
[(1, 5), (2, 6), (3, 7), (4, 8)]
更好的方法是在主循环中进行配对,而不是保存两个列表。
推荐阅读
- mips - 将两个浮点数相加总是在 MIPS 中返回 0.0
- python - 如何使用 Python 执行外部应用程序?
- wordpress - 高级域 - 为什么我不能转移高级域
- azure-devops - 将 keyvault 变量传递到阶段模板 azure devops 管道
- null - 如何在水晶报表中显示带有空白字段的记录
- javascript - ViewChildren 中的 Angular 滚动 2 个不同的滚动条
- c++ - C ++检查是txt文件中浮点数组中的任何字符
- kubernetes - 如何跳过来自 ValidatingWebhook 的 Kubernetes 控制器请求
- stm32 - 需要明确 MLX90614 红外传感器的睡眠模式
- apache-kafka - Clickhouse物化视图未触发