我有一个字符串如下
gmr='rule:unique,attribute:geo,name:unq1,rule:sum,attribute:sales,name:sum_sales'
如果你看清楚它的那种2字典 规则:唯一,属性:地理,名称:unq1 和 规则:总和,属性:销售额,名称:总和销售额
我想将它们转换成如下所示
[
{'rule': 'sum', 'attribute': 'sales', 'name': 'sum_sales'},
{'rule': 'unique', 'attribute': 'geo', 'name': 'uniq1'}
]
请帮忙
我试过了
gmr='rule:unique,attribute:geo,name:unq1,rule:sum,attribute:sales,name:sum_sales'
dlist=[]
at_rule_gm=(x.split(':') for x in gmr.split(','))
dict(at_rule_gm)
但这里我只得到最后一本字典。
最佳答案
从 OP 示例开始:
>>> gmr='rule:unique,attribute:geo,name:unq1,rule:sum,attribute:sales,name:sum_sales'
先做一个空列表。
>>> dlist = [ ]
在列表上使用 entry
循环,由 gmr.split(',')
产生,
将entry.split(':')
存入pair
,
检查对
(键)中的第一个值是否为'rule'
如果是这样,将一个新的空字典附加到dlist
将对存储到 dlist
的最后一个条目中:
>>> for entry in gmr.split(','):
pair = entry.split(':')
if pair[0] == 'rule':
dlist.append({ })
dlist[-1][pair[0]] = pair[1]
打印结果:
>>> print(dlist)
[{'name': 'unq1', 'attribute': 'geo', 'rule': 'unique'},
{'name': 'sum_sales', 'attribute': 'sales', 'rule': 'sum'}]
看起来像 OP 想要得到的东西。
关于python - 将字符串转换为字典列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54018874/