簡體   English   中英

給定一個長字符串,在字典中找到匹配的字符串

[英]Given a long string, find the matching strings in the dictionary

假設我們有一個字典,其鍵是食物名稱。

用戶可以輸入一個食物名稱字符串(即“香蕉酸奶牛排芝士蛋糕”),為了簡單起見,我們假設所有內容都是小寫的,並且沒有食物名稱在字符串中出現多次。

找出字典中的哪些鍵出現在食物名稱字符串中的最有效方法是什么? 讓我們假設可能根本沒有鍵出現,也可能食物名稱字符串僅由字典鍵組成。

這是為了自學。 使用Suffix Trie似乎是一個不錯的選擇,但我不確定如何優化它(因為在這種情況下可能有多個匹配項)如果有眾所周知的定理或參考資料,我將不勝感激。

PS。 感謝您的回答,但唯一的問題是食物名稱不需要長一個字 讓我們想想這樣的事情。

“淡咖啡冰淇淋”

它是 4 個字長的字符串,但只有 2 個食物名稱:淡咖啡、冰淇淋

您可以為此目的使用設置交集

set(food_string.split()) & food_dict.keys()

請注意, dict.keys()雖然不是set ,但支持set API。

如果無法識別食物名稱的明確邊界(例如空格 ),那么您可以使用以下內容:

[k for k in food_dict if k in food_string]

這是你的意思嗎?

dict = {
  "banana": "answer1",
  "steak": "answer1",
  "cheese": "answer1"
}
input = "banana yogurt steak cheese cake"
for word in input.split():
    print (word)
    if word in dict:
        print ("true")

Output:

banana
true
yogurt
steak
true
cheese
true
cake

如果不是一個字:

dict = {
  "banana milk shake": "answer1",
  "steak": "answer2",
  "ice cream": "answer3",
  "salad dressing": "answer4"
}
input = "banana milk shake yogurt steak cheese ice cream cake"
for key in dict:
    print (key)
    if key in input:
        print ("true")
    else:
        print ("false")

Output:

banana milk shake
true
steak
true
ice cream
true
salad dressing
false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM