繁体   English   中英

Python字典迭代地扩展为列表

[英]Python dictionary iteratively expanded into lists

我有以下Python字典:

 b = {'SP:1': 1.0,
      'SP:2': 2.0,
      'SP:3': 3.0,
      'SP:4': 4.0,
      'SP:5': 5.0,
      'SP:6': 6.0,
      'SP:7': 40.0,
      'SP:8': 7.0,
      'SP:9': 8.0}

我要获取此列表并对其进行迭代以创建9个lists ,每个连续列表都是其前身的超集。 所以:

 [1.0]
 [1.0,2.0]
 [1.0,2.0,3.0]
 [1.0,2.0,3.0,4.0]
 ...
 [1.0,2.0,3.0,4.0,5.0,6.0,40.0,7.0,8.0]

列表理解可能是一种非常简单的方法,但是我无法解决!

字典不打算以这种形式使用,并且绝对不应被认为是有序的。 但是,由于键基本上是索引,因此我们可以像这样使用它们:

[[b['SP:'+str(j+1)] for j in range(i+1)] for i in range(len(b))]

您可以执行以下操作:

>>> vals = [v for k, v in sorted(b.items())]
# or shorter, but less explicit:
# vals = [b[k] for k in sorted(b)]
>>> [vals[:i+1] for i in range(len(vals))]
[[1.0],
 [1.0, 2.0],
 [1.0, 2.0, 3.0],
 [1.0, 2.0, 3.0, 4.0],
 [1.0, 2.0, 3.0, 4.0, 5.0],
 [1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
 [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 40.0],
 [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 40.0, 7.0],
 [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 40.0, 7.0, 8.0]]

第一次理解会为您提供按键排序的值,因为初始dict本质上是无序的。 第二个为您提供该值列表的所有所需切片。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM