将字典转换为平面数据结构(列表或元组)的有效方法

对棋盘游戏实施了广度优先搜索在这里,我使用 adict来反映每个级别上的重复板配置。目前,整体搜索几乎将我拥有的所有 RAM (16GB) 用于一个启动配置。我计划为不同的开始配置集成交叉检查。因此,我需要对找到的配置进行读取访问,并且如果该级别完成,则该级别的 dict 不会更改。

这就是为什么我计划在评估下一个级别之前将 the 转换dict为具有位置键和位置值的平面数据结构(listtuple[2n][2n+1]

问题是找到一个for快速转换并且不止一个项目。{1: 2, 3: 4}[1, 2, 3, 4]dict10**8

sum(dict.items(), ())Natim另一个问题的评论中发现问题有效,但速度太慢(对于dict超过 10**6 个项目的 s,它似乎停止工作)。

U12-转发

使用itertools函数chainclassmethod替代构造函数from_iterable

>>> from itertools import chain
>>> list(chain.from_iterable(dct.items()))
[1, 2, 3, 4]
>>> 

或与operator.iconcatfunctools.reduce

>>> import operator, functools
>>> functools.reduce(operator.iconcat, dct.items(), [])
[1, 2, 3, 4]
>>> 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章