Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据列表给出的键在嵌套字典中获取值?_Python_List_Dictionary - Fatal编程技术网

Python 如何根据列表给出的键在嵌套字典中获取值?

Python 如何根据列表给出的键在嵌套字典中获取值?,python,list,dictionary,Python,List,Dictionary,我试图根据列表给出的键在嵌套字典中获取值 这是我的密码: 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}, }

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

这是我的密码:

  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']
#我试过了

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


有人能帮我吗?谢谢

问题在于您使用的是嵌套循环,而您应该同时迭代两个列表。您可以使用
zip

[ops[d1][d2] for d1, d2 in zip(lsta, lstd)]
# [6, 56, 56, 96]
这就是工作:

lsta=['OP1','OP3','OP4','OP5']
lstd=['w3','w31','w4','w51']
ops={
'OP1':{'W1':5,'w3':6,'w4':7,'w5':9},
‘OP3’:{'W11':61,'w31':56,'w41':76,'w51':96},
OP4:{'W11':61,'w4':56,'w41':76,'w51':96},
OP5:{'W11':61,'w666':56,'w41':76,'w51':96},
}
对于lsta中的i:
如果我在ops.keys()中:
sub_dict=ops[i]
对于lstd中的j:
如果子目录键()中的j:
打印(子目录[j])

您好,谢谢您抽出时间来帮助我。我试过你的建议,但没用。我得到了以下错误:文件“”,第46行,在[ops[d1][d2]中用于d1,d2在zip(lsta,lstd)]中的keyrorm:“OP1”告诉您外部字典不包含“OP1”,这在共享示例@campioniEach dictionary中不是这样的,我认为问题在于,但我不知道如何解决这个问题。@campioni此sol适用于您共享的示例。请共享一个显示这会在何处引发错误的页面。我发现了错误。非常感谢你。你的建议很有效!:)什么是
ops
?我在您发布的代码中看到了
ops\u machine
,但没有
ops
[ops\u machine[d1][d2]用于zip中的d1,d2(lsta,lstd)]
返回预期的结果您正在将浮动映射到分布非常奇怪的索引:0.00到0.166=>0,0.167到0.499=>1,0.500到0.833=>2,0.834到1.00=>3。假设浮动随机分布,指数0和3的发生概率分别为16.7%,指数1和2的发生概率分别为33.3%。这是故意的吗?
[vs[round(ind*(len(vs)-1))]代表k,ind in zip(lsta,individual[3:7])代表vs in[list(ops_machine[k].values()])]
[ops[d1][d2] for d1, d2 in zip(lsta, lstd)]
# [6, 56, 56, 96]