从python中的嵌套字典结构中提取值

时间:2018-12-11 16:33:55

标签: python dictionary

我的代码和数据结构导致以下输出:

    Actions = set()

     # loop through and obtain a list of files and commands
    for item in d['server']:
         Actions.add('{action}'.format(**item))


     print(Actions)
     commands = list(Actions)

     commands = list(Actions)

输出:

     Actions = {"{'command1': ['uptime'], 'path': ['/var/log/syslog']}", "{'command1': ['df -h'], 'path': ['/var/log/auth.log']}"}

我需要分别提取命令和路径,而这种方法不起作用。

    print(commands[0]['command1'])

    Traceback (most recent call last):

文件“ read_shell_yaml.py”,第46行,在     打印(命令[0] ['命令1']) TypeError:字符串索引必须为整数

2 个答案:

答案 0 :(得分:0)

您正在使用item方法将str.format字典格式化为字符串,这可以防止后面的代码从字典中提取项目。

出于您的目的,Actions的更合适的数据结构将是由命令索引的字典,而不是:

Actions = {}
for item in d['server']:
    Actions[items.pop('command1')] = item

,以便您以后可以像这样遍历Actions字典的项目:

for command, properties in Actions.items():
    print(command, properties['path'])

答案 1 :(得分:0)

如果您需要按照以前的方式进行操作,则可以在最后:

import json
content = json.loads(command[0].replace("'", '"'))
content['command1'] #prints ['df -h']