Python:用字符串列表匹配嵌套的dict/list

2024-10-02 04:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个标题列表作为字符串。我想确定这些标题中的任何一个,在这些标题中可以找到特定几个关键字列表中的任何一个(例如,“new excellent iphone 4 8gb”将与['4','8gb']匹配)。这些关键字集中的所有关键字都必须在标题字符串中才能算作匹配项(即“iPhone4”与['4'、'8gb']不匹配),并且它们应该是单独的单词,即我不希望['4'、'8gb']与“iPhone4S 8gb”匹配。我将这些关键字集嵌套在一个列表中

下面是我的代码,虽然它缺少了一个关键部分,即遍历每个关键字列表的循环,这让我很难理解。写这个函数最有效的方法是什么

cleantitles = ['title1','title2','title3']
models = [{'model': ['4', '8gb'], 'mapped': u'iphone 4 8gb'}, {'model': ['4', '16gb'], 'mapped': u'iphone 4 16gb'}]

for title in cleantitles:
    if all(x in title for x in ???):
        print 'matched something!'
    else:
        print 'no match:('  

Tags: 字符串in标题列表newformodeltitle
1条回答
网友
1楼 · 发布于 2024-10-02 04:29:26

试图把这类语句放在一行中很可能会让人看不懂。你需要3层迭代:标题,模型,关键字。您当前正在尝试将模型和关键字合并到一个语句中。我建议你避免这样

您还缺少使用[key]解包字典

你会想要这样的东西:

for title in cleantitles:
    for model in models:
        if all(x in title for x in model['model']):
            print('matched something!')
        else:
            print('no match:(')

不要过早地优化代码。以最简单的方式编写代码,如果速度不够快,请重构

相关问题 更多 >

    热门问题