这是一个很难解释的问题。我有一个字符串,看起来像是从json配置文件中提取的“ system.cpu.total.pct”。此特殊格式是我程序中其他位置所必需的,因此无法更改。
此“ system.cpu.total.pct”指定我感兴趣的是从metricbeat(在Elasticsearch中)获取的哪个字段。
我需要将其转换为列表地址(?是什么称呼它?),以便可以从我称为“ rawData”的数据库结果数组中获取内容。现在我正在这样做:
if sourceSet == "system.cpu.total.pct":
dataArray.append(rawData['hits']['hits'][thisRecord]["_source"]['system']['cpu']['total']['pct'])
但这显然不好,因为结果是硬编码的。
我该如何写类似的东西
dataArray.append(rawData['hits']['hits'][thisRecord]["_source"]["system.cpu.total.pct"])
对任何任意字符串都适用吗?
有什么建议吗?谢谢!
答案 0 :(得分:1)
您可以使用:
if sourceSet == "system.cpu.total.pct":
d = rawData['hits']['hits'][thisRecord]["_source"]
for t in sourceSet.split('.'):
d = d[t]
dataArray.append(d)