检测字典键的位置

时间:2016-04-10 03:18:54

标签: python dictionary numbered-list

我正在编写文本冒险,我创建了一个系统,用户可以在该系统中观察区域和区域中的对象。

例如,用户可以将区域视为:

“一个平淡,安静的沙漠。你可以看到鼠标扫帚。”

它使用for循环创建一个带有数字的项目列表。

  1. 观察或观察猫
  2. 拍摄或观察鼠标
  3. 我想知道如何为文本中显示的每个词条分配一个数字。

    {"cat":1, "mouse":1, "broom":1}

    每个键的值是对象的实例数。如何使我的代码允许每个键从其字典值中获得值ASIDE以便能够按顺序引用?

    用户应该能够输入与编号列表对应的他/她的回复号码。如果他们选择“1”,他们会选择观察猫,并且可以根据该词典中“对象编号1”的内容进行更改,该字段会根据用户当前所在的区域而变化。

    如果用户在一个黑暗的洞穴中,则该SAME字典中的“对象编号1”可能会更改为“dog”。用户应该能够选择“1”并观察DOG而不是CAT ...

    那么如何检测哪个键位于字典的哪个位置?

1 个答案:

答案 0 :(得分:1)

这里有两种不同的数据。一个是长期特征集(对象出现了多少个实例),另一个是用户仅用于菜单选择的非常瞬态索引。将第二个用例委托给执行提示的函数。它可以使用您传递给函数的简单列表,并找出索引本身。

item_database = {"cat":1, "mouse":1, "broom":1}

def multiprompt(base, *items):
    """Prompt for a list of items and return the item selected"""
    while 1:
        for index, item in enumerate(items, 1):
            print("{}. {} {}".format(index, base, item))
        try:
            choice = int(input("Select number: "))
            if choice < 1 or choice > len(items):
                raise ValueError()
            return items[choice-1]
        except ValueError:
            print("Error, try again")

choice = multiprompt("Take or observe", "cat", "mouse", "broom")
print("You chose {} which as count {}".format(choice,
    item_database[choice]))