Python 将数组/列表转换为字典的有效方法是什么?
我试图以最有效(意味着最快)的方式将数组信息转换为列表 我有一个我称之为node_map的列表,我想成为字典的键,然后是一个node_坐标的3D数组(node_coords_tmp),我想与node_map关联 节点映射看起来像:Python 将数组/列表转换为字典的有效方法是什么?,python,arrays,performance,dictionary,Python,Arrays,Performance,Dictionary,我试图以最有效(意味着最快)的方式将数组信息转换为列表 我有一个我称之为node_map的列表,我想成为字典的键,然后是一个node_坐标的3D数组(node_coords_tmp),我想与node_map关联 节点映射看起来像: [1,2,3,4,5] 节点坐标在最初打印时报告为: (<exodus.c_double_Array_8352100 object at 0x2c2d8c0>, <exodus.c_double_Array_8352100 object at 0x
[1,2,3,4,5]
节点坐标在最初打印时报告为:
(<exodus.c_double_Array_8352100 object at 0x2c2d8c0>, <exodus.c_double_Array_8352100 object at 0x2c2d5f0>, <exodus.c_double_Array_8352100 object at 0x2c2d560>)
这是我想要的,但是对于我正在处理的阵列的大小来说,速度比我想要的要慢。有没有更好的方法使用numpy或其他形式来实现这一点?谢谢。试试听写理解
node_coords = { i: (node_coords_tmp[0][ct],
node_coords_tmp[1][ct],
node_coords_tmp[2][ct]) for ct, i in enumerate(node_map) }
你如何想象在不到O(n)个时间内填充一本字典?你必须迭代每一项。它将是O(n),但系数可能是重要的,这取决于OP处理的具体n。@dimo并非所有具有相同对数算法估计的算法都在同一时间执行。当然不是,但是如果你关心的是输入的大小,那么你是在问渐进复杂性。Chad,谢谢。我不得不去python2.6命名法(你认为这会有时间惩罚吗,用2.6而不是2.7风格的dict理解?)。速度快了大约5%,这是一个进步,但我也可能需要跳到一些类似的东西。通过使用np.add而不是压缩列表理解中的求和,我显著加快了一些列表方式的添加,并希望能在这里找到类似的内容。我可能会转向一种新的方法,或是通过MPI。再次感谢。这应该与使用
dict((i,(…)进行ct,i在enumerate(…)
node_coords = { i: (node_coords_tmp[0][ct],
node_coords_tmp[1][ct],
node_coords_tmp[2][ct]) for ct, i in enumerate(node_map) }