我要做的是用键存储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,就应该减少。
答案 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成为元组而不是列表允许它被用作键,因为它是不可变的