2014-01-29 70 views
3

在包含字典的列表中,如何根據字典的唯一值對其進行分割?因此,舉例來說,這樣的:爲每個值複製python字典

t = [ 
    {'name': 'xyz', 'value': ['K','L', 'M', 'N']}, 
    {'name': 'abc', 'value': ['O', 'P', 'K']} 
    ] 

變成這樣:

t = [ 
    {'name': 'xyz', 'value': 'K'}, 
    {'name': 'xyz', 'value': 'L'}, 
    {'name': 'xyz', 'value': 'M'}, 
    {'name': 'xyz', 'value': 'N'}, 
    {'name': 'abc', 'value': 'O'}, 
    {'name': 'xyz', 'value': 'P'}, 
    {'name': 'xyz', 'value': 'K'} 
    ] 

回答

5

你可以用一個列表理解這一點。通過每個字典d迭代,並創建d['values']新字典的每個值:

>>> t = [ dict(name=d['name'], value=v) for d in t for v in d['value'] ] 
>>> t 
[{'name': 'xyz', 'value': 'K'}, 
{'name': 'xyz', 'value': 'L'}, 
{'name': 'xyz', 'value': 'M'}, 
{'name': 'xyz', 'value': 'N'}, 
{'name': 'abc', 'value': 'O'}, 
{'name': 'abc', 'value': 'P'}, 
{'name': 'abc', 'value': 'K'}] 
+0

尊重.... :-) – khan