Python从字典中解开嵌套列表值

富塔多

这个问题在这里去近,我想。但是,我的字典在每个键的列表中都有一个列表,例如:

test = {1092268: [[81, 90], [78, 90]], 
        524292: [[80, 80], [65, 78]], 
        892456: [[88, 81], [81, 88]]}

当每个键中只有一个列表时,可以使用的建议是:

xs, ys = zip(*test.values())

如何从多个列表中解包(仍然为xs和ys)?

对于该示例,我期望的结果是:

xs = [81, 78, 80, 65, 88, 81]
ys = [90, 90, 80, 78, 81, 88]
cs95

没有太大的变化,只是提前变平了您的价值观。

itertools.chain

from itertools import chain
xs, ys = zip(*chain.from_iterable(test.values()))

当然,这将返回元组。如果您要使用列表,建议您添加map通话-

xs, ys = map(list, zip(*chain.from_iterable(test.values())))

print(xs)
[81, 78, 80, 65, 88, 81]

print(ys)
[90, 90, 80, 78, 81, 88]

基于理解

这是将嵌套循环压缩成一行的另一种方法(即嵌套列表理解),

xs, ys = map(list, zip(*[j for i in test.values() for j in i]))

print(xs)
[81, 78, 80, 65, 88, 81]

print(ys)
[90, 90, 80, 78, 81, 88]

但是,我建议您这样做,itertools.chain因为它已被证明全面胜过嵌套列表的理解(... hah)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章