如何解决Python dict循环外问题
我正在使用pyyaml
读取yaml文件,并在yaml文件中查找特定属性,并在列表中获取其所有值。
我已经将dict设置为value,对于每个prop值,我都将尊重的yaml文件添加到set中,所以dict会像这样循环:
prop1 => yaml1,yaml2,prop2 => yaml3,prop3 => yaml4,yaml1 etc...
我正在循环中填充dict,但是一旦完成所有yaml文件的读取,然后从外循环返回dict就会始终将其返回为空dict。
代码段:
def populate_records():
records_map = defaultdict(set)
path = 'abc/xyz'
pattern = '*.yaml'
prop_key = "abc::def"
files = glob.glob(path + os.sep + pattern)
for filename in files:
f_name = os.path.basename(filename).rsplit(".",1)[0]
with open(filename,'r') as f:
node = yaml.load(f)
if node is not None:
for property_name in node:
if prop_key == property_name:
prop_list = node[property_name]
break
for prop in prop_list:
records_map[prop].add(f_name)
return records_map
任何人都可以帮助我找出以上代码的问题吗?
解决方法
我设法修复了它,它在列表上抛出了空指针异常,并且由于此dict总是返回为空。
工作代码:
def populate_records():
records_map = defaultdict(set)
path = 'abc/xyz'
pattern = '*.yaml'
prop_key = "abc::def"
files = glob.glob(path + os.sep + pattern)
for filename in files:
f_name = os.path.basename(filename).rsplit(".",1)[0]
with open(filename,'r') as f:
node = yaml.load(f)
if node is not None:
for property_name in node:
if prop_key == property_name:
prop_list = node[property_name]
if prop_list is None:
break
for prop in prop_list:
records_map[prop].add(f_name)
break
return records_map
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。