python - 将字符串转换为字典列表

标签 python python-3.x string list dictionary

我有一个字符串如下

 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/

相关文章:

python - 如何在执行时创建Python方法?

python - 字典列表中是否存在 True 值?

python - 比较 Pandas 中数据帧的标题

c++ - union 成员有一个重要的复制构造函数

javascript - 获取对象的 "class"属性,拆分为字符串数组

Python 日志记录 : Why is __init__ called twice?

python - 如何在给定特定规则集的情况下分割字符串?

python - Django 的 on_delete 错误

带有单引号查找的 Java 正则表达式错误?

python - Viewset 的 Django 更新方法即使在覆盖后仍返回 415