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

(Dictionary) storing keys with x,y in Python

我想做的是用一个键存储一个 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,就应该减少。

如果像这样将 x,y 列表保存在字典中,这也取决于您想要更改必须遍历列表的值时的条件。

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

这是我从你的问题中了解到的。

所以最简单的方法是调用玩家变量 str()。这会将列表变成一个字符串。您需要这样做,因为字典不能使用列表作为键。所以请尝试以下操作:treasureHits[str(player)]

请注意,通常不推荐这样做,因为您会有非常不寻常的键,如果其他人要编辑您的代码,这可能会造成混淆。确保在您的代码中留下大量注释!

我想你想使用播放器作为你的键,并将计数作为该键的值:

>>> 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 元组而不是列表允许它用作键,因为它是不可变的