Python:如何将列表中的值映射到与其相关的字典键



我有一个字典dic与这个键和值对:(注意:这个dic双射(即:一对一映射)

dic = {
0: 0, 
30: 1, 
35: 2, 
42: 3, 
53: 4, 
54: 5, 
55: 6, 
81: 7, 
83: 8, 
95: 9, 
99: 10
}

在我的源代码中,有一个列表L,它是从一个特定的计算生成的。L中的值实际上与dic的值相关联。因此,基于dic,我想要这个L列表:

L = [0, 0, 7, 2, 2, 1, 9]

转换为dic中的值。这是期望的输出out:

out = [0, 0, 81, 35, 35, 30, 95] 

我可以使用什么样的列表推导来获得期望的输出?

您可以从原始字典创建反向字典,并使用它来获得所需的结果,如:

dic = {0: 0, 
30: 1, 
35: 2, 
42: 3, 
53: 4, 
54: 5, 
55: 6, 
81: 7, 
83: 8, 
95: 9, 
99: 10}
invertedDic = {v:k  for k, v in dic.items()}
L = [0, 0, 7, 2, 2, 1, 9]
res = [invertedDic[elt] for elt in L]
print(res)

输出:

[0, 0, 81, 35, 35, 30, 95]

同样,不建议使用dict这样的关键字作为对象名。

还有另一种解决方案,它不需要生成值和键交换的中间字典。它只是一步完成了@Krishna Chaurasia提出的解决方案。限制是相同的,特别是您必须确保dic在其他地方是双目标的。

dic = {
0: 0, 
30: 1, 
35: 2, 
42: 3, 
53: 4, 
54: 5, 
55: 6, 
81: 7, 
83: 8, 
95: 9, 
99: 10
}
L = [0, 0, 7, 2, 2, 1, 9]
out = [k for el in L for k,v in dic.items() if el==v]

print(out)
# [0, 0, 81, 35, 35, 30, 95]

相关内容

  • 没有找到相关文章

最新更新