python - 如何为图像切片选择具有不同可能组合的字典列表?
问题描述
我正在尝试从字典列表中获取所有值,以便它应该涵盖所有可能的不同组合。例如
list = [{'a': 32}, {'b': 2541}, {'c': 530}, {'d': 55}, {'a': 544}, {'b': 44}, {'c': 54}, {'d': 454}, {'a': 42}, {'b': 655}, {'c': 459}, {'d': 665}, {'a': 2145}, {'b': 450}, {'c': 342}, {'d': 186}, ........]
我想一次选择两对,如下所示
image1 = img[2541:55, 32:530]
image2 = img[44:454, 544:54]
我也想用所有其他可能的组合来做到这一点
image1 = img[2541:55, 32:530]
image2 = img[655:665, 42:459]
像这样我可以做 12 对不同的配对,我怎样才能自动化它以获得所需的值?
解决方案
如果您想要所有可能的组合,您可以使用itertools.product
.
第一步是重新排列所有可能的值'a', 'b', 'c' and 'd'
。假设您的列表每 4 步重复一次,为了清楚起见,您可以放入字典,如下所示:
l1 = {k: [e.get(k) for e in your_list][i::4] for i, k in enumerate(['a', 'b', 'c', 'd'])}
l1
>>
{'a': [32, 544, 42, 2145],
'b': [2541, 44, 655, 450],
'c': [530, 54, 459, 342],
'd': [55, 454, 665, 186]}
然后:
from itertools import product
combinations = [c for c in product(*l1.values())]
combinations
>>[(32, 2541, 530, 55),
(32, 2541, 530, 454),
(32, 2541, 530, 665),
(32, 2541, 530, 186)
....
(2145, 450, 342, 186)] #256 combinations in this case (4**4)
推荐阅读
- ios - 在 iOS 13 全屏中呈现模式
- php - 选择查询不给我值
- php - 如何按键值对数组进行排序并保持相等的顺序
- php - phpMyAdmin 错误消息“$cfg['TempDir'] (./tmp/) 不可访问。”
- python - xarray - 按任意时间段重新采样时间序列数据
- php - 使用具有关系的 laravel 使用 Vuejs 获取数据时没有检索数据
- reactjs - 如果在 react-Datetimepicker 上选择该值,该值如何定义
- postgresql - 选择更新查询返回基数违规
- asp.net-mvc - 使用 Docker Compose / Dockerfile 从容器连接到本地开发机器中的主机
- c++11 - 如何使用运行时错误 malloc 修复此 C++ 代码:sysmalloc:断言