Python 无法访问字典列表中的数据

Python 无法访问字典列表中的数据,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我试图访问嵌套有序字典中的一些数据。此词典是使用XMLTODICT模块创建的。显然,我想创建自己的词典,但这一本是我无法控制的 我试着用很多方法接近它们 例如: 使用for循环: 我可以使用v[“name”]访问第一级,这将为我提供子策略和父策略 当我执行v[“class”][“name”]时,我希望得到“Test1”,但事实并非如此 我也尝试过v[(“类“,)]变体,但没有成功 任何意见都将不胜感激 以下数据通过XML从设备中检索,并使用XMLTODICT转换为字典 [ { “@xmlns”:

我试图访问嵌套有序字典中的一些数据。此词典是使用XMLTODICT模块创建的。显然,我想创建自己的词典,但这一本是我无法控制的

我试着用很多方法接近它们

例如:

使用for循环:

我可以使用
v[“name”]
访问第一级,这将为我提供子策略和父策略

当我执行
v[“class”][“name”]
时,我希望得到“Test1”,但事实并非如此

我也尝试过
v[(“类“,)]
变体,但没有成功

任何意见都将不胜感激

以下数据通过XML从设备中检索,并使用XMLTODICT转换为字典

[
{
“@xmlns”:”http://cisco.com/ns/yang/Cisco-IOS-XE-policy",
“名称”:“儿童政策”,
“类”:[
{
“名称”:“Test1”,
“行动清单”:{
“动作类型”:“带宽”,
“带宽”:{
“百分比”:“30”
}
}
},
{
“名称”:“Test2”,
“行动清单”:{
“动作类型”:“带宽”,
“带宽”:{
“百分比”:“30”
}
}
}
]
},
{
“@xmlns”:”http://cisco.com/ns/yang/Cisco-IOS-XE-policy",
“名称”:“家长政策”,
“类”:{
“名称”:“类默认值”,
“行动清单”:[
{
“动作类型”:“形状”,
“形状”:{
“平均”:{
“比特率”:“10000000”
}
}
},
{
“操作类型”:“服务策略”,
“服务政策”:“儿童政策”
}
]
}
}
]
我的预期结果是从嵌套字典中检索值,并生成和输出类似的结果:

Queue_1:        Test1
Action_1:       bandwidth
Allocation_1:   40


Queue_2:        Test2
Action_2:       bandwidth

Allocation_2:   10
我现在遇到了格式化输出的问题,问题是如何获取值

# 今晚我有时间,所以我将代码更改为动态:

    int = 0
    int_2 = 0
    for v in policy_dict.values():
        print("\n")
        print("{:15} {:<35}".format("Policy: ", v[0]["name"]))
        print("_______")
        for i in v:
            int_2 = int_2 + 1
            try:
                print("\n")
                print("{:15} {:<35}".format("Queue_%s: " % int_2, v[0]["class"][int]["name"]))
                print("{:15} {:<35}".format("Action_%s: " % int_2, v[0]["class"][int]["action-list"]["action-type"]))
                print("{:15} {:<35}".format("Allocation_%s: " % int_2, v[0]["class"][int]["action-list"]["bandwidth"]["percent"]))
                int = int + 1
            except KeyError:
                break
                pass
int=0
int_2=0
对于策略_dict.values()中的v:
打印(“\n”)

打印(“{:15}{:根据您发布的示例,您可以尝试检索如下值:

v[0]["class"][0]["name"]
这将产生:

Test1

根据表示法,v[“class”]是一个列表,因此v[“class”][0][“name”]应该有效。我尝试了你的建议,但没有成功。我得到了以下错误:类型错误:列表索引必须是整数或切片,而不是输入的标准库。Michael ButscherThanks需要帮助。我能够得到预期的结果。你帮我解决了我身上的刺,这已经有一段时间了。一直在学习。@ChrisO Do y您现在明白问题所在了吗?是的,这是一个字典列表。第一个[0]是包含所有字典的列表,或主列表。第二个[0]是如何访问主列表的第一个索引,即“类”。[1]是如何访问主列表的第二个索引,也是“类”