【问题标题】:string to list of dictionaries (python)字符串到字典列表(python)
【发布时间】:2012-08-11 10:03:30
【问题描述】:

我有一个字符串需要分成 3 种方式,然后分成字典列表。

given_string = 'name:mickey,age:58|name:minnie,age:47,weight:60' 

data = []

data = [value.split(',') for value in given_string.split('|')]

data = [['name:mickey', 'age:58'], ['name:minnie', 'age:47', 'weight:60']]

现在我想在 ':' 上再拆分一次,并让数据包含两个字典的列表,这样当我输入数据 [1][年龄] 时,我得到 47。

基本上,我想我希望它能够工作:

data = [{'name': 'mickey', 'age': '58}, {'name': 'minnie', 'age': '47', 'weight': '60'}] 

我相信最终,数据应该是一个字典列表,但是一旦我将字符串拆分为两个列表,我会在将其拆分为“:”然后将子列表转换为字典时感到困惑。

【问题讨论】:

    标签: python string list dictionary split


    【解决方案1】:
     given_string = 'name:mickey,age:58|name:minnie,age:47,weight:60' 
     data = [value.split(',') for value in given_string.split('|')]
    
     y=[] # make a empty list
     for i in data:
         z={}
         for v in range(len(i)):
             b=i[v].split(":")      #  ['name", "mickey', 'age","58"]
             z[b[0]]=b[1]           # adding keys and values in dictionary z  
         y.append(z)                # adding dictionary to the list
    

    【讨论】:

      【解决方案2】:

      你可以做一个简单的列表理解

      >>> [dict(x.split(':') for x in parts.split(',')) 
           for parts in given_string.split('|')]
      [{'age': '58', 'name': 'mickey'}, {'age': '47', 'name': 'minnie', 'weight': '60'}]
      

      【讨论】:

        【解决方案3】:

        更努力地筑巢。

        >>> [ dict(y.split(':') for y in x.split(',')) for x in 'name:mickey,age:58|name:minnie,age:47,weight:60'.split('|')]
        [{'age': '58', 'name': 'mickey'}, {'age': '47', 'name': 'minnie', 'weight': '60'}]
        

        【讨论】:

        • 我尝试了这个,但我得到一个错误:回溯(最近一次调用最后一次):文件“”,第 1 行,在 类型错误:'list' 对象不可调用跨度>
        • @user1589244:如果您不小心将内置名称 dict 反弹到列表中,即在某些时候执行了类似 dict = [whatever] 的操作,则会导致这种情况。
        • 我再次尝试了这个,但首先使用 dict = {}。然后我得到了这个错误: Traceback (last recent call last): File "", line 1, in TypeError: 'dict' object is not callable
        • @user1589244 你需要del dict 才能恢复正确的值
        • @JBernardo 这行得通。 del dict 到底做了什么?这是否意味着 dict 之前已经存储了值?
        猜你喜欢
        • 2021-03-17
        • 1970-01-01
        • 2012-10-11
        • 2019-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多