2016-04-26 8 views

Antwort

3

Wie wäre es mit so etwas?

>>> d = {'name':{0:'tom',1:'dav'}, 'age':{0:22,1:23}} 
>>> values = zip(*[value.values() for value in d.values()]) 
>>> l = [{'name': name, 'age': age} for name, age in values] 
>>> l 
[{'name': 'tom', 'age': 22}, {'name': 'dav', 'age': 23}] 

[value.values() for value in d.values()] return [['tom', 'dav'], [22, 23]], die die Werte Ihrer subdicts ist, und dann, zip() Rückkehr [('tom', 22), ('dav', 23)].

Dann verwenden wir for Schleife über die gezippten Werte, und legen Sie die Werte in die dicts in l.

0

Eine weitere Variante in einer Zeile:

a = {'name':{0:'tom',1:'dav'}, 'age':{0:22,1:23}} 
[ dict(zip(*(a.keys(),y))) for y in zip(*(x.values() for x in a.values())) ] 
0

und ein anderer in einer Zeile;)

age,name = {'name':{0:'tom',1:'dav'}, 'age':{0:22,1:23}}.values() 
print [{'name': name[inx],'age':age[inx]} for inx in age] 
[{'age': 22, 'name': 'tom'}, {'age': 23, 'name': 'dav'}] 
Verwandte Themen