Python: доступ к значениям для ключа Dict, созданного с использованием переменных - PullRequest
1 голос
/ 24 июля 2010

Привет, я программировал консольную версию Minesweeper только для того, чтобы изучить некоторые основы Python.Он использует систему координат, которая записана в словаре.Теперь я смог реализовать его успешно, но доступ к определенному ключу координаты или присвоение ему значения с использованием переменных для «x, y» координаты кажется ... неуклюжим.Есть два разных способа, которые я придумала, но они не кажутся очень элегантными, когда мне приходится так часто их использовать.

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 ]

5 голосов
/ 24 июля 2010

Почему бы просто не использовать кортеж в качестве ключа?

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 голос
/ 24 июля 2010

Если вы сделаете mine_field списком списков, вы можете использовать более хороший синтаксис:

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

mine_field[i][j] = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...