【发布时间】:2016-04-26 09:35:01
【问题描述】:
在 python 中,我有一个dict,如下所示:
{'name':{0:'tom',1:'dav'}, 'age':{0:22,1:23}}
我想改成这样:
[{'name':'tom','age':22}, {'name':'dav','age':23}]
你能用最简单的方法回答吗?
【问题讨论】:
标签: python dictionary nested
在 python 中,我有一个dict,如下所示:
{'name':{0:'tom',1:'dav'}, 'age':{0:22,1:23}}
我想改成这样:
[{'name':'tom','age':22}, {'name':'dav','age':23}]
你能用最简单的方法回答吗?
【问题讨论】:
标签: python dictionary nested
这样的事情怎么样?
>>> 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]] 这是你的 subdicts 的值,然后,zip() return [('tom', 22), ('dav', 23)]。
然后,我们对压缩后的值使用for 循环,并将值放入l 中的字典中。
【讨论】:
一行中的另一种变体:
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())) ]
【讨论】:
还有一个在一行中;)
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'}]
【讨论】: