2016-07-26 46 views
0

我有這樣的字典的名單:變換字典的列表,一個簡單的字典

[{ 
    'attr': 'bla', 
    'status': '1', 
    'id': 'id1' 
}, { 
    'attr': 'bla', 
    'status': '1', 
    'id': 'id2' 
}, { 
    'attr': 'bli', 
    'status': '0', 
    'id': 'id1' 
}, { 
    'attr': 'bli', 
    'status': '1', 
    'id': 'id2' 
}] 

我wan't得到一個簡單的結果,字典是這樣的:

result = { 
    'bla' : True, 
    'bli' : False 
} 

如果兩個id對於attr有一個1,值將爲True。否則,它將會是False。

我試着

​​

但我不明白怎麼做。我阿洛斯嘗試像

if all(val == '1' for val in list): 
    # .. 
+0

我更新了我的文章 –

回答

0

在這裏你去:

dicts = [{ 
    'attr': 'bla', 
    'status': '1', 
    'id': 'id1' 
}, { 
    'attr': 'bla', 
    'status': '1', 
    'id': 'id2' 
}, { 
    'attr': 'bli', 
    'status': '0', 
    'id': 'id1' 
}, { 
    'attr': 'bli', 
    'status': '1', 
    'id': 'id2' 
}] 

# First run is to create all nessecary items in the 
# new Dictionary so i can use the and operator on them later. 
newDict = {} 
for dictio in dicts: 
    for key, value in dictio.items(): 
     if key == 'attr': 
      newDict[value] = True 

# The second run uses the and operator    
for dictio in dicts: 
    for key, value in dictio.items(): 
     if key == 'attr': 
      tmpAttr = value 
     if key == 'status': 
      newDict[tmpAttr] = newDict[tmpAttr] and (value == '1') 

print(newDict) 

一個愉快的一天有!