python - 如何在列表词典中彻底搜索以获得正确的结果
问题描述
这是我的代码:
dicto = [{100: 1, 90: 2, 80: 3, 70: 4}, {100: 1, 90: 2, 80: 3}, {105: 1, 100: 2, 90: 3, 80: 4}]
listo = [70,80,105]
track = []
for y in dicto:
for x in listo:
try:
track.append(y[x])
except KeyError:
pass
print(track)
我想要做的是使用“listo”中的数字作为键来获取正确的值。listo 中的第一个数字只能在 'dicto' 中的第一个字典中搜索。listo 中的第二个数字只能在 dicto 中的第二个字典中搜索,而不能在第一个字典或第三个字典中搜索。listo 中的第三个数字也只能在 dicto 中的第三个字典中搜索,而不能在其他字典中搜索。
输出应该是这样的:
[4,3,1]
但我的代码正在返回:
[4,3,3,4,1]
如何修复我的代码以在 Python 3.x 中提供正确的输出
解决方案
您可以使用zip
.
dicto = [{100: 1, 90: 2, 80: 3, 70: 4}, {100: 1, 90: 2, 80: 3}, {105: 1, 100: 2, 90: 3, 80: 4}]
listo = [70,80,105]
track = []
for key, d in zip(listo, dicto):
try:
track.append(d[key])
except KeyError:
pass
print(track)
# [4, 3, 1]
如果您想None
在缺少键的情况下作为值,则可以使用:
track = [d.get(key) for key, d in zip(listo, dicto)]
推荐阅读
- linux - 如何在linux下使用mosix集群包运行cpuminer-multi挖矿包
- javascript - 如何使用从数据库预填充的 vuejs 字段进行验证?
- rest - 在 PCF 上部署时 Rest API 的响应读取超时问题
- sql - Sql如何在不丢失数据的情况下对列进行分组
- javascript - AngularJS:从 HTML 表中读取 Json 数据
- python - 如何编写 python 脚本在 linux mint 中打开应用程序
- firebase - Flutter - 循环从firestore获取数据
- c# - 何时使用?而不是空
- c++ - switch 和 SFINAE 中的类型推导,gcc vs clang
- java - Reading Files insinde a ,Jar