首页 > 解决方案 > 更改字典列表中的值类型

问题描述

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

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

我试过下面的代码:

for each in result:
    record_value = each['record_id']
    record_value = str(record_value)
    print(type(record_value))
    if type(record_value)1= list:
        record_value = record_value.split()
        each['record_id'] = record_value

预期输出:

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

请指导我解决方案

标签: pythondictionary

解决方案


您可以使用列表/字典理解和类型检查isinstance

[{k: list(map(str, v)) if isinstance(v, list) else v
  for k,v in d.items()}
  for d in list_of_dict]

输出:

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

此处编辑是确保“record_id”是字符串列表的替代方法

[{k: (list(map(str, v)) if isinstance(v, list) else [str(v)]) if k == 'record_id' else v
  for k,v in d.items()}
 for d in list_of_dict]

输出:

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

推荐阅读