Python: 使用变量创建的字典键访问值
你好,我正在编写一个控制台版本的扫雷游戏,主要是为了学习一些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开始的索引呢?