簡體   English   中英

如何從多個文本文件中獲取元組列表(第 2 部分:Electric Boogaloo)?

[英]How to get a list of tuples from several text files (Part 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)]

更好的方法是在主循環中進行配對,而不是保存兩個列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM