gpt4 book ai didi

python - 在字典中查找/映射多个键并添加到列表中

转载 作者:行者123 更新时间:2023-11-28 17:02:29 27 4
gpt4 key购买 nike

我当前的代码:

from nltk.tag import pos_tag, map_tag
search_term = 'quaker lemon banana oatmeal'
lst = []
search_term_words = search_term.split()
for w in search_term_words:
if w in flavor_grocer_mapping:
for flavor in flavor_grocer_mapping[w]:
if flavor in search_term:
lst.append((flavor, 'FLAVOR'))
for x in search_term.replace(flavor, '').split():
if x in brand_grocer_mapping:
for brand in brand_grocer_mapping[x]:
if brand in search_term.replace(flavor, '').split():
lst.append((brand, 'BRAND'))
for word, tag in pos_tag(word_tokenize(search_term.replace(flavor, '').replace(brand, '').strip())):
lst.append((word, map_tag('en-ptb', 'universal', tag)))

我得到的结果:

[('lemon', 'FLAVOR'), 
('quaker', 'BRAND'),
('banana', 'NOUN'),
('oatmeal', 'NOUN'),
('banana', 'FLAVOR'),
('quaker', 'BRAND'),
('lemon', 'ADJ'),
('oatmeal', 'NOUN')]

我的预期结果是:

[('lemon', 'FLAVOR'),
('banana', 'FLAVOR'),
('quaker', 'BRAND'),
('oatmeal', 'NOUN')]

我知道问题在于搜索词中的拆分词在 for 循环中递归运行。如何在字典中查找/映射包含多个键的整个字符串? (例如,lemonbanana 在搜索词字符串中,它们是 flavor_grocer_mapping 字典中的键。)

最佳答案

好吧,我尝试根据您的结果重新创建 flavor_grocer_mapping,您用于查找的额外代码是非常不必要的。相反,由于您有一个对应于 search_term_words 作为键的字典,所以在列表理解中进行适当的字典查找。

search_term = 'quaker lemon banana oatmeal'
search_term_words = search_term.split()

#recreating your dictionary
flavor_grocer_mapping = [('lemon', 'FLAVOR'),
('banana', 'FLAVOR'),
('quaker', 'BRAND'),
('oatmeal', 'NOUN')]
flavor_grocer_mapping = {k:v for (k,v) in flavor_grocer_mapping}

#solution
results = [(word,flavor_grocer_mapping[word]) for word in search_term_words]
results
>>[('quaker', 'BRAND'),
('lemon', 'FLAVOR'),
('banana', 'FLAVOR'),
('oatmeal', 'NOUN')]

对于您提供的示例,我建议您将所有词典合并到 1,而不是反复循环遍历它们。

关于python - 在字典中查找/映射多个键并添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53475058/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com