我有两个使用字典理解创建的字典。我想知道 (a) 是否有一种方法可以一次性构建它,(b) 是否可取? (c) 有更好的方法吗?
templates_gray = {k:cv2.imread(v, 0) for (k, v) in static_templates.items()}
img_dimension = {k:v.shape for (k, v) in templates_gray.items()}
最佳答案
A) 您当然可以在一行中完成。在你的第二次迭代中,你实际上只是为字典中的每个值获取一个属性。
img_dimension = {k: cv2.imread(v, 0).shape for k, v in static_templates.items()}
B) 阅读起来有点困难,我不认为我会那样做。您可以对多行进行理解,这可能会有所帮助。
img_dimension = {
k: cv2.imread(v, 0).shape
for k, v in static_templates.items()
}
C) 我想我要做的是将理解与函数结合起来。这使逻辑无法理解,我认为更容易阅读。我不知道定义一个函数是否会打破你对单行代码的渴望。
def get_shape(v):
x = cv2.imread(v, 0)
return x.shape
img_dimension = {k: get_shape(v) for k, v in static_templates.items()}
注意:这假定 templates_gray
不是您以后需要使用的东西。
关于python - 如何在 Python 中结合以下理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57530088/