如何输入一个数字,这将导致搜索列表然后字典进行确认

时间:2015-09-27 04:17:50

标签: python dictionary

所以我不断收到错误" TypeError:' int'对象是不可取消的"为我的代码。我想要做的是将一个数字作为输入,然后有一个函数首先搜索一个列表,然后搜索该数字的字典。如果该数字在字典中,则返回一些信息。我想我知道为什么弹出错误信息,但是我要求另外一个做我想做的事情。

item1 = {
    "name": "Item 1",
    "code": 1001,
}

item2 = {
    "name": "Item 2",
    "code": 1002,
}

item3 = {
    "name": "Item 3",
    "code": 1003,
}

produce = [item1, item2, item3]

def produce_info_code(x):
    print
    produce_name = input("Enter Produce code [eg. 1234]: ")
    if produce_name["code"] in x:
        return "Name: %s" % produce_name["name"], "Code: %s" % produce_name["code]

print produce_info_code(produce)

感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

我认为你没有发布你的整个代码,因为据此,你无法得到上述错误。无论如何,实际问题是,input()的返回值是str类型,不可订阅。

def produce_info_code(x):
    produce_name = int(input("Enter Produce code [eg. 1234]: "))
    for dct in x:
        if produce_name == dct.get("code")
            return "Name: %s" % dct["name"], "Code: %d" % produce_name
    return None

答案 1 :(得分:0)

您还可以使用Generator Expressions,如下所示:

def produce_info_code(x):
    produce_name = int(input("Enter Produce code [eg. 1234]: "))
    return next((("Name: %s, Code: %d" % (item["name"],produce_name)) for item in produce if item["code"] == produce_name),None)