这是我的代码:
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)]