【问题标题】:List of dictionary need to split and take first only value after split字典列表需要拆分,拆分后只取第一个值
【发布时间】:2022-11-25 14:02:21
【问题描述】:

我有 Python 中的字典列表,我想在拆分字典中的值后将其转换为另一个列表,并在拆分后仅取第一个值。

myList = [
  {'name': 'CN=John,Li', 
   'type': 'Agent', 
   'isMember': False},
  {'name': 'CN=Moses,Somewhere', 
   'type': 'Worker', 
   'isMember': True},
  {'name': 'CN=David, Something', 
   'type': 'Agent', 
   'isMember': False}
]


required_fields = ['name', 'isMember']

拆分值后我正在寻找所需的输出

myList = [
  {'name': 'John', 
   'isMember': False},
  {'name': 'Moses', 
   'isMember': True},
  {'name': 'David', 
   'isMember': False}
]

先感谢您

【问题讨论】:

    标签: python list dictionary


    【解决方案1】:

    一个从名称中找到 CN=... 部分的小辅助函数,以及一个循环遍历 myList 的列表理解:

    import re
    
    
    def get_cn(name):
        return re.search("CN=([^,]+)", name).group(1)
    
    
    my_list = [...]
    
    new_list = [
        {'name': get_cn(x['name']), 'isMember': x['isMember']}
        for x 
        in my_list
    ]
    
    print(new_list)
    

    这输出

    [{'name': 'John', 'isMember': False}, {'name': 'Moses', 'isMember': True}, {'name': 'David', 'isMember': False}]
    

    【讨论】:

      【解决方案2】:

      这可以在单行中完成 -->

      new_list = []
      for i in range(len(myList)):
          new_list.append({"name": re.search("CN=([^,]+)", myList[i]['name']).group(1), 
                           "isMember":myList[i]['isMember']})
      print(new_list)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-04
        • 1970-01-01
        • 2010-12-19
        • 2021-09-09
        相关资源
        最近更新 更多