Python:字典中可搜索的字典?

时间:2013-12-12 22:53:26

标签: python dictionary

我是Python的新手,不习惯处理这类东西。

我写的代码:

search = str.lower(raw_input("What are you looking for?" + " " ))

knowledge = {"apple": 123, "test" : "cats"}

def return_the_input(search):
    if search in knowledge:
        print knowledge.get(search)
    else:
       print "No."
    return_the_input(search)

所以我想要它做的就是问你想要什么(苹果),然后苹果会在unix中显示类似于Ls命令的东西。所以它看起来像这样:

“你在找什么?” - 输入苹果。然后,Apple会打印出其他值,例如

黄油 酱 零食

然后会问“下一步是什么?” - 输入黄油

我所有关于苹果酱的信息都会显示出来。

所以我在代码中将其设置为

knowledge = {"apple":{"butter": "info on butter here", "sauce": "info on sauce here"}, "cats":{et cetera}}

然后以某种方式采取行动以获得我想要的格式?我假设可能有某种For循环,或只是打印语句?

1 个答案:

答案 0 :(得分:0)

你的想法会奏效。但是,如果一个项目属于两个类别怎么办?更好的解决方案是存储所有知识,然后将数据结构映射到知识。

knowledge = [
    [("apple", "butter"), "made from cooked down apple sauce"],
    [("peanut", "butter"), "made from crushed peanuts"],
]

def make_terms_from_knowledge(info):
    search_terms = {}

    for n, item in enumerate(info):
        for i in item[0]:
            search_terms.setdefault(i, []).append(n)

    return search_terms

terms = make_terms_from_knowledge(knowledge)
print terms["butter"]

for entry in terms["butter"]:
    print knowledge[entry][1]

只要知识发生变化,您就需要重新生成术语。这很简单,但应该让你思考其他路径并展示一些Python技巧。