2017-06-14 128 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(',')' –