Python:使用字符串列表

时间:2015-11-28 10:55:43

标签: python string list dictionary nested

我有一个标题列表作为字符串。我想识别这些标题中的任何一个,其中找到了特定几个关键字的列表中的任何一个(例如,'新的优秀iphone 4 8gb'将与[' 4',& #39; 8GB'])。这些关键字集中的所有关键字都必须位于标题字符串中才能算作匹配(即' iphone 4'与[' 4',' 8gb&#不匹配39;]) - 它们应该是单独的单词,即我不希望[' 4' 8gb']匹配' iphone 4s 8gb&# 39 ;.我在嵌套在列表中的dicts中有这些关键字集。

我的代码在下面,虽然它缺少一个关键部分,循环遍历每个关键字列表,我无法绕过我的脑袋。将此函数写入函数的最有效方法是什么?

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:('  

1 个答案:

答案 0 :(得分:1)

尝试在一行中使用这种语句可能会使其无法读取。您需要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:(')

永远不要过早优化您的代码。尽可能以最简单的方式编写代码,然后如果这对你的情况来说还不够快,那么重构。