2014-01-29 41 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