我有多个文本文件。每一个档案都是一个动物的清单和它们的数量。这样地:
豪萨.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
}
...
}