2012-08-15 112 views
1

我有一個字符串,需要分裂3種方式,然後進入字典列表。字符串到字典列表(python)

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

巢更難。

>>> [ 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'}] 
+0

我試圖這樣做,但我得到一個錯誤:回溯(最後最近一次調用): 文件 「」,1號線, in TypeError:'list'對象不可調用 – user1589244 2012-08-15 03:35:58

+0

@ user1589244:導致這種情況的一個原因是,如果您不小心將內置名稱'dict'重新列表到列表中,即在某些地方做了類似'dict = [whatever]點。 – DSM 2012-08-15 03:38:34

+0

我再次嘗試過,但首先使用了詞典= {}。然後我得到這個錯誤,而不是:回溯(最近呼叫最後): 文件「」,第1行,在 TypeError:'dict'對象不可調用 – user1589244 2012-08-15 03:39:56

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'}] 
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