私は以下のようにdict
を持っている:ネストされたdictsをpythonでリストするように変換しますか? Pythonで
{'name':{0:'tom',1:'dav'}, 'age':{0:22,1:23}}
私はこれにそれを変更したい:
[{'name':'tom','age':22}, {'name':'dav','age':23}]
あなたはこれを行うための最も簡単な方法で答えることはできますか?
私は以下のようにdict
を持っている:ネストされたdictsをpythonでリストするように変換しますか? Pythonで
{'name':{0:'tom',1:'dav'}, 'age':{0:22,1:23}}
私はこれにそれを変更したい:
[{'name':'tom','age':22}, {'name':'dav','age':23}]
あなたはこれを行うための最も簡単な方法で答えることはできますか?
どうやってこのようになりますか?
>>> 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()]
その後、あなたのsubdictsの値のリターン[['tom', 'dav'], [22, 23]]
、および、zip()
リターン[('tom', 22), ('dav', 23)]
。
次に、圧縮された値の上にfor
ループを使用して、値をl
のdictsに入れます。
1行に他の変形例:
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())) ]
そして、1行でもう1;)
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'}]