包含使用路径的列表的Python访问字典

时间:2018-03-06 14:35:30

标签: python json list dictionary

我有一个"复杂" (嵌套有未定义的深度并包含列表)json字典存储我的项目的配置设置,该文件的片段:

{   
    "system_configuration": {
      "SYSLOGD_ARGS":"-n -O /var/log/messages"
    , "KLOGD_ARGS":"-n"
    , "dbus": {
          "location":"/usr/share/dbus-1/system.d/ab.conf"
        , "services": [
              "com.stezza.ab"
            , "com.stezza.keyboard"
            , "com.stezza.mpd"
            , "com.stezza.remote"
            , "com.stezza.volume" ]
    }
    , "wpa_supplicant": {
          "location":       "/etc/wpa_supplicant.conf"
        , "ctrl_interface": "/var/run/wpa_supplicant"
        , "update_config":  "1"
        , "network": [
              {   "ssid": "OpenWrt"
                , "psk":  "f22da64fa33936391b0ace4d544c63c5b340877327d31ad028296c875c0d8adb" }
            , {   "ssid": "SecondNetwork"
                , "psk":  "f22da64fa33936391b0ace4d544c63c5b340877327d31ad028296c875c0d8adb" } ]
    }
}

我将json文件加载到Python中的字典中。

如果有这样的路径,那么正确的方法是什么:

  • " / system_configuration / DBUS / 1"

    • 应该返回" com.stezza.keyboard"
  • " / system_configuration /的wpa_supplicant /网络/ 0 / SSID"

    • 应该返回" OpenWrt"

(背景,可能不相关,这条路径将通过一个烧瓶<path:> - url来到我这里,作为RESTful API的一部分)

我正在考虑分割路径,循环遍历它并检查类型是否是列表来处理列表,但我觉得可能会有更多的pythonic&#39;或许这样做的方法。

1 个答案:

答案 0 :(得分:0)

由于您可以使用方括号对字典和列表编制索引,因此无需区分两者。 AFNP(请求宽恕,不是许可)是针对此类问题的pythonic方法。

ValueError

如果您希望始终在字典中查找条目,则提升acc而不是将None设置为<toggle-switch [enableSwitch]="true"></toggle-switch> 会更有意义。 Python的Zen(导入这个)说你不应该让错误无声地传递,除非是打算。