(字典)在Python中存储带有x,y的键

时间:2016-03-26 16:56:57

标签: python arrays list dictionary coordinate

我要做的是用键存储x,y值。例如,在我的情况下,我需要它,以便一旦任何x,y达到值3,就会发生一些过程。

以下是我的尝试:但是,这给了我一个错误,因为我无法在词典中存储列表。

dictionary= {}
player = [0,0]

def Checking():
    if player in dictionary:
        dictionary[[player]] +=1
        print("repopulate", dictionary)
    else:
        dictionary[player] = 0
        print(dictionary)
    if dictionary.get(player) >= 3:
        print("It is done!")

修改 很抱歉问题不明确。播放器变量是用户希望在给定的x,y内移动的用户输入。有多个宝藏,如果用户要选择一个位置x,y,它与宝藏x,y相同;然后+1应该添加到那个宝藏。一旦宝藏达到3,就应该减少。

3 个答案:

答案 0 :(得分:0)

如果你在字典中列出x,y这样的列表,那么当你想要改变你必须在列表中迭代的值时,这也取决于你的条件。

treasureHits = {}
player = [0,0]
def myFunction():
    treasureHits["key"]=[p+1 for p in player]
    print treasureHits["key"]
myFunction()

这就是我从你的问题中理解的。

答案 1 :(得分:0)

所以最简单的方法是在播放器变量上调用str()。这会将列表转换为字符串。您需要这样做,因为词典不能使用列表作为键。请尝试以下操作:treasureHits[str(player)]

请注意,通常不建议这样做,因为您将拥有非常不寻常的密钥,如果其他人正在编辑您的代码,则可能会造成混淆。请务必在代码中留下大量注释!

答案 2 :(得分:0)

我认为您希望使用播放器作为密钥,将计数作为该密钥的值:

>>> treasure_hits = {}
>>> player = (0,0)
>>> try:
...   treasure_hits[player] += 1
... except KeyError:
...   treasure_hits[player] = 0
... 
>>> treasure_hits
{(0, 0): 0}
>>> 
>>> try:
...   treasure_hits[player] += 1
... except KeyError:
...   treasure_hits[player] = 0
... 
>>> treasure_hits
{(0, 0): 1}
>>> 

使treasure_hits成为元组而不是列表允许它被用作键,因为它是不可变的