Jua*_*cia 6 python string dictionary list
我有一个格式的字符串:
["('colA':'datA1', 'colB':'datB1', 'colC':'datC1')",
"('colA':'datA2', 'colB':'datB2', 'colC':'datC2')",
..........
"('colA':'datAn', 'colB':'datBn', 'colC':'datCn')]
Run Code Online (Sandbox Code Playgroud)
我需要获得一个字典:
[{'colA': 'datA1', 'colB': 'datB1', 'colC': 'datC1'},
{'colA': 'datA2', 'colB': 'datB2', 'colC': 'datC2'},
..........
{'colA': 'datAn', 'colB': 'datBn', 'colC': 'datCn'}]
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我需要使用Python自己的函数或至少不使用循环,但我不知道这是否可行.
用大括号替换括号并使用ast.literal_eval:
import ast
l = ["('colA':'datA1', 'colB':'datB1', 'colC':'datC1')",
"('colA':'datA2', 'colB':'datB2', 'colC':'datC2')",
"('colA':'datAn', 'colB':'datBn', 'colC':'datCn')"]
result = [ast.literal_eval('{%s}' % item[1:-1]) for item in l]
Run Code Online (Sandbox Code Playgroud)
结果:
>>> import pprint
>>> pprint.pprint(result)
[{'colA': 'datA1', 'colB': 'datB1', 'colC': 'datC1'},
{'colA': 'datA2', 'colB': 'datB2', 'colC': 'datC2'},
{'colA': 'datAn', 'colB': 'datBn', 'colC': 'datCn'}]
Run Code Online (Sandbox Code Playgroud)
正如 @nexus66 所建议的,这是该答案的更精简版本:
l = ["('colA':'datA1', 'colB':'datB1', 'colC':'datC1')",
"('colA':'datA2', 'colB':'datB2', 'colC':'datC2')",
"('colA':'datAn', 'colB':'datBn', 'colC':'datCn')"]
result = [dict(
item.replace("'", '').split(':')
for item in s[1:-1].split(', ')
)
for s in l]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1401 次 |
| 最近记录: |