嵌套字典中的嵌套列表理解

时间:2019-02-13 00:04:20

标签: python python-3.x

我正在尝试编写嵌套列表推导,以从主词典和子列表中获取嵌套列表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排成一行。

4 个答案:

答案 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()]