字符串到字典列表(python)

时间:2012-08-15 03:23:52

标签: python string list dictionary split

我有一个字符串,需要以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'}] 

我相信最终,数据应该是一个字典列表但是一旦我将字符串分成两个列表,我就会把它分成':'并将子列表转换为字典而感到困惑。

3 个答案:

答案 0 :(得分:4)

您可以使用简单的列表理解

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

答案 1 :(得分: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'}]

答案 2 :(得分:0)

 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