字典中的列表 - int对象不可迭代

时间:2018-04-14 15:55:39

标签: python

我为我和我的朋友们制作了一个奇怪的不和谐机器人,并且代码的一部分涉及创建一个字典,该字典可以包含包含项目名称的列表,以及它的成本。

作为参考,一个名为" userShop"拥有这样的东西:

{'DiscordName#0000': [23, 'test item']},其中不和谐名称是不言自明的,int是项目的成本,字符串是项目的名称。

为了购买&#34;该项目,用户在命令!buyitem <cost> <name>中键入,这将启动以下代码片段:

@bot.command(pass_context=True)
async def buyitem(ctx, buyFrom: str, *, item: str):
    userName = str(ctx.message.author)
    for itemName, cost in userShop[buyFrom]:
        if itemName == item:
            #blah blah blah

返回错误

for itemName, cost in userShop[buyFrom]: TypeError: 'int' object is not iterable

我该怎么做才能解决这个问题? 感谢。

1 个答案:

答案 0 :(得分:2)

如果userShop[buyFrom]是这样的列表[23, 'test item'],则无法使用in直接将两个值分配给两个变量。

您应该使用:

itemName = userShop[buyFrom][0]
cost = userShop[buyFrom][1]
if itemName == item:
    #blah blah blah