Python: 使用变量创建的字典键访问值

1 投票
2 回答
1562 浏览
提问于 2025-04-16 01:47

你好,我正在编写一个控制台版本的扫雷游戏,主要是为了学习一些Python的基础知识。这个游戏使用了一个坐标系统,这些坐标是保存在一个字典里的。现在,我已经成功实现了这个功能,但用变量来访问或给特定坐标的键赋值,感觉有点麻烦。我想出了两种不同的方法,但在频繁使用时,它们看起来都不太优雅。

for i in range(1, ROWS+1):
        for j in range(1, COLS+1):
            mine_field["%i,%i" % (i,j)] = 0

或者

for i in range(1, ROWS+1):
        for j in range(1, COLS+1):
            mine_field[",".join([i, j])] = 0

虽然这样做能正常工作,但在赋值或交换值的时候,看起来就有点乱。有没有更好的方法可以做到这一点呢?

提前谢谢你。

2 个回答

1

如果你把 mine_field 变成一个列表的列表,那么你就可以用更简单的写法了:

mine_field = [[0]*ROWS for i in range(COLS)]

mine_field[i][j] = 1
5

为什么不直接用元组作为键呢?

for i in range(1, ROWS+1):
    for j in range(1, COLS+1):
        mine_field[(i, j)] = 0 # you don't even need the parentheses!

用这种方法,你可以像这样使用用逗号分隔的索引:

d = {(1,2):3}
print d[1, 2] # will print 3

顺便问一下,为什么你用的是从1开始的索引呢?

撰写回答