我要做的是用键存储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!")编辑:很抱歉这个问题不够清晰。player变量是用户希望在给定的x,y内移动的位置的用户输入。有多个宝藏,如果用户要选择与宝藏x相同的位置x,y,则应该将+1添加到该宝藏中。一旦一个宝藏达到3,它就应该减少。
发布于 2016-03-26 17:16:06
我认为您想要使用播放器作为您的密钥,而计数作为该键的值:
>>> 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成为元组而不是列表允许将其用作键,因为它是不可变的。
发布于 2016-03-26 17:10:42
如果像这样将list x,y保存在字典中,这也取决于您想要更改必须迭代列表的值时的情况。
treasureHits = {}
player = [0,0]
def myFunction():
treasureHits["key"]=[p+1 for p in player]
print treasureHits["key"]
myFunction()这就是我从你的问题中了解到的。
发布于 2016-03-26 17:11:45
因此,最简单的方法是对player变量调用str()。这将将列表转换为字符串。您需要这样做,因为字典不能使用列表作为键。因此,请尝试以下操作:treasureHits[str(player)]
请注意,通常不推荐这样做,因为您将拥有非常不寻常的键,如果其他人将编辑您的代码,则可能会使您感到困惑。确保在代码中留下大量的注释!
https://stackoverflow.com/questions/36238104
复制相似问题