python - 循环外的Python dict问题
问题描述
我正在使用 yaml 文件读取pyyaml
并查找 yaml 文件中的特定属性,并在列表中获取它的所有值。
我将 dict 设置为值,并且对于每个道具值,我将尊重 yaml 文件添加到 set 中,因此 dict 会像这样循环:
prop1 => yaml1 , yaml2 , prop2 => yaml3 , prop3 => yaml4, yaml1 etc...
我在循环内填充字典,但是一旦所有 yaml 文件读取完成,然后从外循环返回字典总是返回空字典。
代码片段:
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
推荐阅读
- android - android studio 无法解析:runner 无法解析:espresso-core 无法解析:monitor
- php - php - 在 null 上对成员函数的任何调用都未捕获错误
- android - 在动态生成的组件中创建 react native app、开发和生产差异
- python - Pandas,Wide_to_Long 正在创建额外错误的行和额外的错误列
- python - 使用 CNN 的验证码识别没有给出预期的结果
- maven - Maven 构建失败(无法从以下候选 [Application, pfc.app.Application] 中找到单个主类)
- python - 在 Python 中获取 TypeError
- sql - SQL Server 2008:: 执行以下查询的有效方法
- windows - 安装程序,将所有需要的文件从 Internet 直接下载到安装文件夹
- ios - UIKeyboardDidShow 触发太频繁?