我正在尝试编写嵌套列表推导,以从主词典和子列表中获取嵌套列表A。不确定我是否解释正确...
我有:
master_d = {'d0': {'p': [1], 'q': [2]}, 'd1': {'p': [2], 'q': [5]}}
coefs = ['p', 'q']
试图获得
A = [[1,2],[2,5]]
我可以通过以下方式索引字典
print(master_d['d0']['p'][0])
我确信可以通过列表理解来做到这一点,但是我一直在努力尝试将列表A排成一行。
答案 0 :(得分:3)
您可以使用嵌套列表理解:
[[i for l in d.values() for i in l] for d in master_d.values()]
这将返回:
[[1, 2], [2, 5]]
答案 1 :(得分:0)
如果您使用熊猫,则可以在python 2中执行类似的操作。在python 3中,您将需要使用list
来转换map
。
import pandas as pd
df = pd.DataFrame(master_d)
map(lambda z: reduce(lambda y, x: y + x, df[z], []), df)
答案 2 :(得分:0)
[ sum([ v[c] for v in master_d.values() ], []) for c in coefs ]
或使用纯列表推导
[ [ x for l in [ v[c] for v in master_d.values() ] for x in l ] for c in coefs ]
答案 3 :(得分:0)
您可以使用reduce
来连接dict
元素内部的所有值:
from functools import reduce
from operator import add
A=[reduce(add, d.values()) for d in master_d.values()]