我有多个文本文件。每一个档案都是一个动物的清单和它们的数量。这样地:
豪萨.txt

cats 3
dogs 1
birds 4

houseB.txt文件
cats 5
dogs 3
birds 1

我有大约20个房子,每个房子有大约16000个物种(所以每个文件有大约16000行)。所有的房子都有相同的物种,只是每个物种的数量不同。
我当前的脚本逐行循环遍历每个文件,并捕获房子、物种名称及其计数。
我想编一本关于房子的字典,每个房子都是一本关于动物及其数量的字典。从上面的例子来看,结果如下:
dictOfDicts{houseA:{'cats': 3, 'dogs': 1, 'birds': 4}, houseB:{'cats': 5, 'dogs': 3, 'birds': 1}}

如果你想知道的话,这个稍后会变成一张桌子:
      house:   A   B
animal
  cats         3   5
  dogs         1   3
 birds         4   1

这是我的剧本:
#!/usr/bin/python3
import sys


houseL = []
dictList = []
with open(sys.argv[1], 'r') as files:
    for f in files:
        f = f.rstrip()
        with open(f, 'r') as aniCounts:
            house = str(aniCounts).split(sep='/')[2]  # this and the next line captures the house name from the file name.
            house = house.split('.')[0]
            houseL.append(house)

            for line in aniCounts:
                ani = line.split()[0]
                count = line.split()[1]
                #print(ani, ' ', count)

编辑:由于一个有帮助的评论员,把问题改成了口述。

最佳答案

我想试试这样的:

house_names = ['houseA', 'houseB', ...]
houses_dict = {}

for house in house_names:
    houses_dict[house] = {}

    with open(house + '.txt') as f:
        for line in f:
            species, num = line.rsplit(maxsplit=1)  # split off rightmost word
            houses_dict[house][species] = int(num)

结果将是(例如):
houses_dict = {
    'houseA': {
        'cats': 3
        'dogs': 1
        'birds': 4
    },
    'houseB': {
        'cats': 5
        'dogs': 3
        'birds': 1
    }
    ...
}

08-25 10:24