【发布时间】:2018-08-10 15:39:29
【问题描述】:
我正在尝试使用 yaml 文件来存储字典键,以便解析各种 json 有效负载。
我将以下 yaml 文件加载到名为“cfg”的变量中:
my_table: metadata
当我跑步时:
for i in json['resources']:
print(i[cfg['my_table']])
我可以从我的 json 的 ['metadata'] 键中查看所有值。
但是,我希望查看 ['resources'] 下存在的 ['metadata']['guid'] 键的所有值。因此,当我将 yaml 文件更改为:
my_table: metadata, guid
它不起作用。我也尝试过这些变体:
my_table: ['metadata', 'guid'] #tried ''.join("['{0}']".format(a) for a in cfg['my_table']) which gives me what I want, but when I shove this inside i[], I get a key error
my_table: ['metadata']['guid'] #yaml file doesn't parse properly
有什么想法吗?
【问题讨论】:
-
好吧,如果您尝试映射 yaml 属性,那么值的结构应该是 python 可以理解的结构。试试
my_table: [metadata, guid] -
我们能看到你的 json 的一个例外吗?
guid是metadata对象的键还是resources对象中的单独键? -
您需要
i['metadata']['guid'],这是对i和i['metadata']的两个单独的索引操作,而不是您可以在一个表达式中捕获的单个索引操作。也就是说,没有x对应的i[x] is i['metadata']['guid']。