python - 更改字典列表中的值类型
问题描述
在下面的字典中,有些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'}]
请指导我解决方案
解决方案
您可以使用列表/字典理解和类型检查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'}]
推荐阅读
- javascript - blob 上的错误内容类型无法打开 img / 文件已损坏
- ubuntu-18.04 - 使用 PowerBroker Identity Services Open (PBISO) 绑定到 AD 的 Ubuntu 18.04 不使用相同的 AD UID
- dictionary - 从方法中获取字典数据并显示到自定义模型树视图中
- laravel - web.php 已经保存但仍然给出了错误的路线
- angular - Angular/TypeScript - 映射从多个表接收到的 API 数据
- opencv - Opencv:来自cv.MatchShapes的一个正确的返回值
- google-home - 开发的动作无法使用nest Mini进行测试
- driver - 启用多个 MSI
- json - C++ 如何将字符串转换为 json 对象?
- android - Kotlin App:IllegalStateException:指定的孩子已经有一个父母。您必须先在孩子的父母上调用 removeView()