这个问题在这里去近,我想。但是,我的字典在每个键的列表中都有一个列表,例如:
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]
没有太大的变化,只是提前变平了您的价值观。
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] 删除。
我来说两句