python - 如何根据列表给出的键获取嵌套字典中的值?
问题描述
我试图根据列表给出的键在嵌套字典中获取值。
这是我的代码:
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]
有人可以帮我吗?谢谢
解决方案
问题是您使用的是嵌套循环,而您应该同时遍历两个列表。您可以zip
为此使用:
[ops[d1][d2] for d1, d2 in zip(lsta, lstd)]
# [6, 56, 56, 96]
推荐阅读
- php - 我应该在哪里存放 morilog/jalai 包?
- core-data - CoreData:为什么在 book.isPublic 切换时不刷新 UI
- java - java.util.InputMismatchException:对于输入字符串:“2147483648”
- visual-studio - 在 Visual Studio 2019 中找不到 nuget 安装的模板
- java - 为什么我的 FTP 列表返回错误回复代码 425
- java - ExecutorService 线程在 RxJava 代码中未按预期工作
- android - RemoteServiceException 在 MIUI 11 上使我的应用程序崩溃
- docker - 为什么会出错:“docker build”需要 1 个参数
- c++ - 为什么地图的大小在比较时会发生变化?
- python - 遵循某些步骤后更改值的布尔值