如何从字典中搜索键值对,我只知道值的部分字符串?

时间:2017-10-17 03:51:49

标签: python regex dictionary

我有一个字典,其中我有与每个键相关联的值:

mail_info={'2367': ['Payment Claim'], '2610': ['Managing Contractor Advice '], '2453': ['Variations'], '3453': ['Trade Package Variation Recommendation'], '654': ['Response to Variation']......}

我想提取所有键值对,其中“Variation”或“Variations”这个词是字符串的一部分。

我尝试了以下命令:

[(k, v) for (k, v) in mail_info.items() if 'Variations' in v]

但这只会返回完全匹配。

有人可以建议一个正确的方法吗?也许使用正则表达式(虽然没有必要)?

2 个答案:

答案 0 :(得分:0)

我建议将这些列表转换为字符串,然后检查结果字符串中的短语。类似的东西:

new_dict = {}

for key in mail_info:
    string = ''.join(mail_info[key])
    if 'Variation' in string:
        new_dict[key] = string

答案 1 :(得分:0)

不是最优雅的解决方案,但应该适合你

mail_info={'2367': ['Payment Claim'],
           '2610': ['Managing Contractor Advice '],
           '2453': ['Variations'],
           '3453': ['Trade Package Variation Recommendation'],
           '654': ['Response to Variation']
           }


new_d = {key:mail_info[key] for key in mail_info if 'Variation' in mail_info[key][0]}

print(new_d)