python - 如何在 Python 中结合以下理解?

标签 python dictionary-comprehension

我有两个使用字典理解创建的字典。我想知道 (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/

相关文章:

python - UnicodeEncodeError 仅在通过管道传输到文件时且仅在某些 PC 上出现

python - pySpark,聚合复杂函数(连续事件的差异)

Python--查找嵌套字典中特定值的父键

python - 如何使用字典理解计算键子字符串匹配的字典值小计

python - 通过 Python 使用谷歌翻译的最佳方式

python - 每 x 秒调用一次函数 (Python)

python - 字典理解中的三元表达式

python - 如何可读且有效地创建一个可迭代组合字典,并以其索引的元组为键?

python - 在 Python 中返回一个 ping 测试结果

python - 如何删除列表中的整个字典?