如何在多层字典中寻找价值

时间:2020-05-05 06:25:57

标签: python dictionary

我有以下内容:

trd_potfolio = {"TATASTEEL":{"token":"12345"},"VEDL":{"token":"5675"}}
for i in trd_potfolio:
    print(i["token"])

我想找到令牌的值,如何找到它

5 个答案:

答案 0 :(得分:1)

尝试一下:

trd_potfolio = {"TATASTEEL":{"token":"12345"},"VEDL":{"token":"5675"}}
for x in trd_potfolio:
    print(trd_potfolio[x]['token'])

使用dict.values()

for v in trd_potfolio.values():
    print(v['token'])

答案 1 :(得分:0)

请使用for循环,然后使用.values()

拉取值
trd_potfolio = {"TATASTEEL":{"token":"12345"},"VEDL":{"token":"5675"}}
for i in trd_potfolio.values():
    print(i["token"])

答案 2 :(得分:0)

其他选项,如果您希望能够选择一个不同的key来使用一个函数来进行如下操作:

def findkeys(node, kv):
    if isinstance(node, list):
        for i in node:
            for x in findkeys(i, kv):
               yield x
    elif isinstance(node, dict):
        if kv in node:
            yield node[kv]
        for j in node.values():
            for x in findkeys(j, kv):
                yield x

trd_potfolio = {"TATASTEEL":{"token":"12345"},"VEDL":{"token":"5675"}}

print(list(findkeys(trd_potfolio, 'token')))
# ['12345', '5675']
trd_potfolio = {"TATASTEEL":{"token":"12345","test":{"token":"12345"} },"VEDL":{"token":"5675"}}
print(list(findkeys(trd_potfolio, 'token')))
# ['12345', '12345', '5675']

这将适用于更多嵌套的dict,并适用于list

答案 3 :(得分:0)

通过字典的简单循环遍历其键。您想遍历其值。

所以

trd_potfolio = {"TATASTEEL":{"token":"12345"},"VEDL":{"token":"5675"}}
for i in trd_potfolio.values(): # loop through values
    print(i["token"])

答案 4 :(得分:0)

使用py3.8很高兴:

d = {"TATASTEEL":{"token":"12345"},"VEDL":{"token":"5675"}}
for k, v in d.items():
    if (t := 'token') in v:
        print(f'{k = }, v[{t!r}] = {v[t]}')

# k = 'TATASTEEL', v['token'] = 12345
# k = 'VEDL', v['token'] = 5675