【问题标题】:Search by any character on a list of dict with Python使用 Python 按 dict 列表中的任何字符搜索
【发布时间】:2022-07-25 21:19:50
【问题描述】:

我想按字典列表中的任何字符搜索。

my_list  =  [
              {"name": "MrA", "age": 20, "height": 185},
              {"name": "MrsB", "age": 28, "height": 192},
              {"name": "MrC", "age": 18, "height": 170},
              {"name": "MrD", "age": 50, "height": 177},
              {"name": "MrsE", "age": 32, "height": 200}
            ]
keywords = "MrA"
my_list  = [item for item in my_list if keywords in list(item.values())]
print(my_list) //result is [{"name": "MrA", "age": 20, "height": 185}]

如所见,我只能按完整字符进行搜索。但我想处理这个列表,预期结果是按任何字符搜索:

关键字=“夫人”

[{"name": "MrsB", "age": 28, "height": 192},
 {"name": "MrsE", "age": 32, "height": 200}]

OR 关键字 = 18

[{"name": "MrC", "age": 18, "height": 170}]

我不知道如何使它正确?有什么办法可以得到预期的结果?

【问题讨论】:

    标签: python


    【解决方案1】:

    使用正则表达式,如下:

    import re
    
    my_list  =  [
                  {"name": "MrA", "age": 20, "height": 185},
                  {"name": "MrsB", "age": 28, "height": 192},
                  {"name": "MrC", "age": 18, "height": 170},
                  {"name": "MrD", "age": 50, "height": 177},
                  {"name": "MrsE", "age": 32, "height": 200}
                ]
    keywords = [re.compile("Mrs")]
    my_list  = [item for item in my_list if any(keyword.search(item["name"]) for keyword in keywords)]
    print(my_list)
    

    输出

    [{'name': 'MrsB', 'age': 28, 'height': 192}, {'name': 'MrsE', 'age': 32, 'height': 200}]
    

    【讨论】:

      猜你喜欢
      • 2015-03-11
      • 2020-02-26
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 2011-08-19
      相关资源
      最近更新 更多