python - 我试图在字典中获取一个值应该是一个列表
问题描述
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_id
为list
。
预期输出:
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'}]
请指导我解决方案
解决方案
你需要用两颗星来解压字典,而不仅仅是一颗:
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'}]
>>>