【问题标题】:Changing Between Lists and Dictionaries in Python?在 Python 中的列表和字典之间切换?
【发布时间】:2017-02-26 21:49:28
【问题描述】:

在我的游戏代码中,用户绕着一个网格移动,如果他们降落在一个宝箱上,他们的硬币收集量会增加 10。但是一旦你降落在同一个宝箱上 3 次,它就会变成一个强盗并设置你的硬币集合到 0。我对此感到很苦恼,因为当用户首先确定有多少值时,很难计算列表中的单个值。这是我目前的代码:

        TreasureCoords[(x,y)] = 0
        Visits = TreasureCoords.get((x,y), None)
        if Visits is None:
            pass # Nothing happens
        elif Visits > 3:
            print("Uh oh there's a bandit! Your coin collection is now 0.")
            CoinCollection = 0
        else:
            print("You have landed on a treasure chest! You can visit it %i more times before it becomes a bandit." % (2 - visits))
            CoinCollection += 10
            TreasureCoords[(x,y)] += 1

但是,当实现到我的代码中时,会发生此错误: 宝藏坐标[(x,y)] = 0 TypeError:列表索引必须是整数,而不是元组 我相信这与上面的代码使用 TreasureCoords 作为字典有关,而事实上它是一个包含宝箱所在位置的 x 和 y 值的列表。我不相信我可以将我的 TreasureCoords 和 BanditCoords 更改为字典,因为值是随机设置的,值的数量是由用户设置的,因此我看不出你将如何设置键或任何东西。我该怎么办?

【问题讨论】:

    标签: python list dictionary


    【解决方案1】:

    由于元组而发生错误,解决此问题的最佳方法可能是使用字典,因为您的其余代码看起来甚至不需要更改即可更改为字典。

    事实上,Visits = TreasureCoords.get((x,y), None) 行使用了 get 方法,该方法甚至不适用于列表,所以这让我认为代码本来是用来处理字典的。

    您实际上可以将新项目添加到字典中:

    dict = {"Key1": 1}
    dict[(1, 2)] = 42
    print(dict[(1, 2)]) # prints 42
    

    您可能还应该阅读以下内容:https://learnpythonthehardway.org/book/ex39.html

    【讨论】:

    • 是的,我同意 Visits = TreasureCoords.get((x,y), None) 行使用字典方法,但我不确定如何将列表更改为字典。那条线本身并没有真正起作用,因为 TreasureCoords 是一个列表,并且已被分配 TreasureCoords = random.sample(PossibleCoords,TCNumber) 其中 PossibleCoords 是网格中所有坐标的列表,它会随着用户设置网格而改变每场比赛的游戏大小,并且 TCNumber 会根据游戏更改游戏,因为它是由用户设置的。
    • @George 不幸的是,stackoverflow 不用于回答这类广泛的问题。我给出的答案是你应该尝试字典,如果你不知道怎么做,那么你需要学习字典——它很简单。
    • 不,我知道如何创建字典并阅读了您链接我的网页,我只是不知道如何将它们实现到我的代码中,并想知道是否有替代方法我的问题中使用的代码块。对不起,如果我的问题太宽泛了
    猜你喜欢
    • 2019-06-22
    • 2012-06-24
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 2014-07-28
    相关资源
    最近更新 更多