[英]Python: Append to dictionary in for loop
尝试使用Linux fio命令的输出填充字典时,出现意外结果。
with open('normal_output.txt', 'rb') as f:
for line in f.readlines():
d = {}
if ':' not in line:
continue
print("LINE: ", line)
key, value = line.strip().split(':', 1)
d[key] = value
我希望字典中充满KVP,例如:
('KEY: ', 'READ')
('VALUE: ', ' io=131220KB, aggrb=13890KB/s, minb=13890KB/s, maxb=13890KB/s, mint=9447msec, maxt=9447msec')
('KEY: ', 'WRITE')
('VALUE: ', ' io=130924KB, aggrb=13858KB/s, minb=13858KB/s, maxb=13858KB/s, mint=9447msec, maxt=9447msec')
('KEY: ', 'Disk stats (read/write)')
('VALUE: ', '')
('KEY: ', 'sda')
('VALUE: ', ' ios=32642/32600, merge=0/12, ticks=7472/936, in_queue=8392, util=88.18%')
{'sda': ' ios=32642/32600, merge=0/12, ticks=7472/936, in_queue=8392, util=88.18%'}
但是,相反,我只是获得了最后一个KVP:
{'sda': ' ios=32642/32600, merge=0/12, ticks=7472/936, in_queue=8392, util=88.18%'}
我尝试了d [key] .append(value),但这给了我:KeyError:'fio_test'
在循环中,您将创建一个新的空字典d
。 将其移至for
循环之外。
从
with open('normal_output.txt', 'rb') as f:
for line in f.readlines():
d = {}
# do work
至
with open('normal_output.txt', 'rb') as f:
d = {}
for line in f.readlines():
# do work
您甚至可以将词典创建移至上下文管理器( with
语句)之外,以使逻辑更好地组织,但这更多的是口味和样式问题。
您正在for循环中实例化字典,因此每次循环时都将覆盖字典。 将d = {}带到for循环之外
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.