嵌套字典字典在Python中检索值

时间:2020-01-10 03:49:51

标签: python python-3.x dictionary

嵌套的混乱看起来像这样:

{ Users : [
    {'Username': 'abc', 'Attributes' : [{'a':'x'},{'b':x'}]},
    {'Username' : 'def' ...}
]}

我尝试过:

for k,v in users.items() :
    for i in v :
        for k,v in i :
            if k == 'Username' :
                print(v)

错误是

"errorMessage": "too many values to unpack (expected 2)"

尝试:

for v in users['Users'] :
    for i in v :
       for k in v[i] :
           print(k)

错误消息:

"errorMessage": "not enough values to unpack (expected 2, got 1)"

我需要检索“用户名”的值并将其放在简单列表中。有人可以指出我在这里不明白吗?

3 个答案:

答案 0 :(得分:1)

你是如此亲密:

usernames = []
for k,v in users.items():
    for i in v:
        for k,v in i.items():
            #       ^^^^^^^^ you were just missing one more `.items()` call
            if k == 'Username':
                usernames.append(v)

答案 1 :(得分:0)

您刚刚犯了一个错误,您必须为该字典创建一个for循环。项,请检查下面的代码,

data = { 'Users' : [{'Username': 'abc', 'Attributes' : [{'a':'x'},{'b':'x'}] }]}

for k,v in data.items() :
    for i in v :
        for k,v in i.items() :
            if k == 'Username' :
                print(v)

答案 2 :(得分:0)

有些递归级别可以在这里删除。假设只有1个用户密钥。

data = {
    "Users": [
        {"Username": "abc", "Attributes": [{"a": "x"}, {"b": "x"}]},
        {"Username": "def", "Attributes": [{"a": "x"}, {"b": "x"}]},
    ]
}

users = data["Users"]

usernames = [user["Username"] for user in users]

print(usernames)