首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(字典)用Python存储带有x,y的键

(字典)用Python存储带有x,y的键
EN

Stack Overflow用户
提问于 2016-03-26 16:56:56
回答 3查看 2.5K关注 0票数 1

我要做的是用键存储x,y值。例如,在我的例子中,我需要它,这样一旦x,y达到3的值,就会发生一些过程。

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

代码语言:javascript
复制
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,它就应该减少。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-26 17:16:06

我认为您想要使用播放器作为您的密钥,而计数作为该键的值:

代码语言:javascript
复制
>>> 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成为元组而不是列表允许将其用作键,因为它是不可变的。

票数 0
EN

Stack Overflow用户

发布于 2016-03-26 17:10:42

如果像这样将list x,y保存在字典中,这也取决于您想要更改必须迭代列表的值时的情况。

代码语言:javascript
复制
treasureHits = {}
player = [0,0]
def myFunction():
    treasureHits["key"]=[p+1 for p in player]
    print treasureHits["key"]
myFunction()

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

票数 0
EN

Stack Overflow用户

发布于 2016-03-26 17:11:45

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

请注意,通常不推荐这样做,因为您将拥有非常不寻常的键,如果其他人将编辑您的代码,则可能会使您感到困惑。确保在代码中留下大量的注释!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36238104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档