首页 > 解决方案 > 如何根据列表给出的键获取嵌套字典中的值?

问题描述

我试图根据列表给出的键在嵌套字典中获取值。

这是我的代码:

  ops = {
    'OP1' : {'W1':5, 'w3':6, 'w4':7, 'w5':9},
    'OP3' : {'W21':61, 'w22':56, 'w23':76, 'w24':96},
    'OP4' : {'W31':61, 'w32':56, 'w33':76, 'w34':96},
    'OP5' : {'W41':61, 'w42':56, 'w43':76, 'w44':96},

}

lsta = ['OP1', 'OP3', 'OP4', 'OP5']
lstd = ['w3', 'w22', 'w32', 'w44']

#我试过了

for i in lsta:
    lste=[]
    for ele in lstd:
        if ele == ops_machine[i]:
            e = ops_machine[i][ele]


KeyError: 'OP1'    

我想要的是 lstd 给出的每个键的对应值,这意味着:result = [6, 56, 56, 96]

有人可以帮我吗?谢谢

标签: pythonlistdictionary

解决方案


问题是您使用的是嵌套循环,而您应该同时遍历两个列表。您可以zip为此使用:

[ops[d1][d2] for d1, d2 in zip(lsta, lstd)]
# [6, 56, 56, 96]

推荐阅读