gpt4 book ai didi

python - 初始化字典中键/值对的最佳方法

转载 作者:行者123 更新时间:2023-12-01 03:01:40 24 4
gpt4 key购买 nike

我正在使用 Python 3

我有一个带有必须存储的单元格的板,每个单元格都有一个坐标并且需要存储 3 个值。我使用了一个字典,其中键等于单元格的坐标,值是存储所需值的 3 个元素的列表。当板变大并且存储大量键/值对时,获取和读取这些值会很快吗?或者还有什么其他方法在速度方面会更有效?

亚历克斯

编辑:

每个单元格需要的 3 个值是零或一。我有一个包含棋盘尺寸的元组,一个包含应将值为 1 作为第一个值的所有单元格位置的元组,一个包含应将值为 1 作为第二个值的所有单元格位置的卡住集值和一个元组,其中包含应将值 1 作为第三个值的所有单元格位置:

tuple1 是一个元组,其中每个元组代表以 1 作为第一个值的单元格的位置,frozenset 包含元组,每个元组代表以 1 作为第二个值的单元格的位置,tuple2 包含元组每个代表以 1 作为第三个值的单元格的位置(在列表中)

代码:

board = {}

for row in range(dimension[0]):
for col in range(dimension[1]):
board[(row,col)] = [0,0,0] #default
for x in tuple1:
board[x][0] = 1

for x in frozenset:
board[x][1] = 1

for x in tuple2:
board[x][2] = 1

return board

现在查找键和值会很快吗?

EDIT2:这是建立这样的字典最快的方法吗?

最佳答案

使用numpy

如果你正在寻找性能,我认为你应该认真考虑numpy具有 bool 值。以元组作为值的 2D 板可以被视为 3D 矩阵:

import numpy as np

width, height = 5, 5

board = np.full((width,height,3), False, dtype = bool)
tuple1 = ((1,2), (3,4), (0,2))

for i,j in tuple1:
board[i,j,0] = True

print(board)
# [[[False False False]
# [False False False]
# [ True False False]
# [False False False]
# [False False False]]

# [[False False False]
# [False False False]
# [ True False False]
# [False False False]
# [False False False]]

# [[False False False]
# [False False False]
# [False False False]
# [False False False]
# [False False False]]

# [[False False False]
# [False False False]
# [False False False]
# [False False False]
# [ True False False]]

# [[False False False]
# [False False False]
# [False False False]
# [False False False]
# [False False False]]]

使用标准列表

如果您无法使用numpy,您可以简单地使用标准列表:

width, height = 5, 5

board = [[[0, 0, 0] for j in range(width)] for i in range(height)]
tuple1 = ((1,2), (3,4), (0,2))

for i,j in tuple1:
board[i][j][0] = 1

from pprint import pprint
pprint(board)
[[[0, 0, 0], [0, 0, 0], [1, 0, 0], [0, 0, 0], [0, 0, 0]],
[[0, 0, 0], [0, 0, 0], [1, 0, 0], [0, 0, 0], [0, 0, 0]],
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]],
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [1, 0, 0]],
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]]

我认为使用字典没有任何优势。它只会打乱你的单元格并使显示变得更加困难。

关于python - 初始化字典中键/值对的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43759540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com