1

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

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

4

3 回答 3

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'}]
于 2012-08-15T03:28:33.827 回答
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'}]
于 2012-08-15T03:28:16.210 回答
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
于 2012-10-27T11:44:03.670 回答