2017-06-14 129 views
0

我試圖轉換PYTHON:屬性值對拆分列表分爲多鍵字典

l = ['attr0=val1, val2', 'attr1=val3,val4'] 

d = {attr0: [val1, val2]; attr1: [val3, val4]} 

有效/ pythonically。任何人都知道一個簡潔的方式來做到這一點?

我想是這樣的:

d = {} 
for str in l: 
    k = str.split('=')[0] 
    v = str.split('=')[1] 
    d[k] = [] 
    for item in v.split(','): 
     d[k].append(item) 
+0

你嘗試過這麼遠嗎?另外,你的字典無效。這應該是一個值列表[[val1,val2]'?請確保您至少提供預期輸出的正確語法。 – idjaw

+0

更新您的問題的細節。另外,請提供您自己的編碼嘗試。 – idjaw

+0

對不起,這意味着它是一個值列表,無意中省略了括號 – Mike

回答

1
In[9]: test = ['attr0=val1, val2', 'attr1=val3,val4'] 
In[10]: result = {} 
    ...: for attribute in test: 
    ...:  key, value = attribute.split('=') 
    ...:  result[key] = [a.strip() for a in value.split(',')] 
    ...: 
In[11]: result 
Out[11]: {'attr0': ['val1', 'val2'], 'attr1': ['val3', 'val4']} 
+0

對於我的使用,可以保證attr0是唯一的,謝謝! – Mike

+0

@Mike好的,謝謝澄清!我不得不使用列表理解的原因是第一個值由'「,」'分開,但第二個值僅由'「,」'分隔。如果你能保證他們有相同的分隔符,你可以擺脫列表理解,也可以去除多餘的空白。這會給你帶來'result [key] = value.split(',')#或split(',')' –