首页 > 解决方案 > 我试图在字典中获取一个值应该是一个列表

问题描述

list_of_dict =      
    [{'f_text': 'sample', 'symbol': '*', 'f_id': 246, 'record_id': ['4680', '4679'], 'flag': 'N'}, 
     {'f_text': 'other text', 'symbol': '!#', 'f_id': 247, 'record_id': 4678, 'flag': 'N'}]

在上面的字典中,有些record_id在列表中,有些在字符串中。我正在尝试将 的所有值转换record_idlist

预期输出:

list_of_dict =     
    [{'f_text': 'sample', 'symbol': '*', 'f_id': 246, 'record_id': ['4680', '4679'], 'flag': 'N'}, 
     {'f_text': 'other text', 'symbol': '!#', 'f_id': 247, 'record_id': ['4678'], 'flag': 'N'}]

请指导我解决方案

标签: pythondictionary

解决方案


你需要用两颗星来解压字典,而不仅仅是一颗:

result = [{**l[0], 'record_id': list(set([x['record_id'] for x in l]))} for _, v in groupby(sorted(list_of_dict, key=lambda x: x['f_id']), key=lambda x: x['f_id']) if len(l:=list(v))]

输出:

>>> result
[{'f_text': 'sample', 'symbol': '*', 'f_id': 246, 'record_id': ['4680', '4679'], 'flag': 'N'}, 
 {'f_text': 'other text', 'symbol': '!#', 'f_id': 247, 'record_id': ['4678'], 'flag': 'N'}]
>>> 

推荐阅读