【问题标题】:Turning x.x.x.x string into list address (???)将 x.x.x.x 字符串转换为列表地址 (???)
【发布时间】:2020-06-30 16:44:16
【问题描述】:

这是一个很难解释的问题。我有一个看起来像“system.cpu.total.pct”的字符串,我从 json 配置文件中提取。我的程序的其他地方需要这种特殊格式,所以我无法更改它。

这个“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"])

这适用于任意字符串吗?

有什么建议吗?谢谢!

【问题讨论】:

  • 嗨,你能澄清一下代码的实际作用吗? system.cpu.total.pct 会变成什么?
  • “这显然不好,因为结果是硬编码的” - 您可以使用 query_str.split('.') 来获取元素,然后遍历对字典的 get() 方法的调用。
  • 我有 PHP 和 JavaScript 的重复链接,相同的通用方法应该适用于 Python:PHPJS

标签: python string list dictionary key


【解决方案1】:

你可以使用:

if sourceSet == "system.cpu.total.pct":
    d = rawData['hits']['hits'][thisRecord]["_source"]
    for t in sourceSet.split('.'):
        d = d[t]

    dataArray.append(d)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 2023-04-06
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    相关资源
    最近更新 更多