【发布时间】:2018-08-14 01:06:58
【问题描述】:
鉴于以下 yaml 文件存储在 my_yaml 中,其中包含不同的字典键和/或类变量集(由 self._* 表示):
config1.json:
- [[foo, bar], [hello, world]]
config2.json:
- [[foo], [self._hi]]
从 json 文件中,我想填充一个新的元组列表。每个元组中的项目是通过在这个 yaml 文件中查找 dict 键来确定的。
因此,如果我遍历一个名为 config1.json 的字典,并且我有一个名为 config_list 的空列表,我想要执行以下操作:
config_list.append(tuple[i['foo']['bar],i['hello']['world']])
但如果是 config2.json,我想做这样的事情:
config_list.append(tuple[i['foo'],self._hi])
我可以用一种不那么动态的方式来做到这一点:
for i in my_yaml['config1.json'][0]:
config_list.append(tuple([ i[my_yaml[asset][0][0]][my_yaml[asset][0][1]],i[my_yaml[asset][1][0]][my_yaml[asset][1][1]]]))
或:
for i in my_yaml['config2.json'][0]:
config_list.append(tuple([ i[my_yaml[asset][0][0]],i[my_yaml[asset][1][0]]]))
相反,我想动态生成 config_list
的内容任何想法或替代方案将不胜感激。
【问题讨论】:
-
首先,
tuple[[i['foo']['bar],i['hello']['world']]应该是什么?你想要元组(i['foo'['bar'], i['hello']['world']),还是别的? -
但同时:当它们不是 JSON 字符串而是 YAML 数组时,我不知道为什么这些东西被称为
config1.json和config2.json。但看起来您想要做的大部分事情是将每个子数组视为任意长度的i的“关键路径”,而不是config1.json中的固定长度2 和config2.json中的1?如果是这样,那很容易……但我不确定您如何将[self._hi]变成self._hi而不是i['self._hi']。发生这种情况的规则是什么?
标签: python python-3.x yaml