2017-12-10 7 views
0

으로 확장 나는 다음과 같은 파이썬 사전이 있습니다파이썬 사전 반복적으로 나열

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] 

목록 작성으로이 작업을 수행하는 정말 쉬운 방법이있을 수 있지만 해결할 수는 없습니다.

+1

연속적인 정수 키가있는 딕트는 일반적으로 처음에 목록이어야합니다. – wim

+0

자신을 무엇을 시도해 봤습니까? 우리에게 코드를 보여주세요. – Ivonet

답변

3

당신은 다음을 수행 할 수 있습니다

>>> 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으로 키에 의해 정렬 된 값을 제공합니다 본질적으로 순서가 없습니다. 두 번째는 그 값 목록의 원하는 모든 조각을 제공합니다.

3

사전은이 양식에 사용되지 않으며 주문한 것으로 간주되어서는 안됩니다. 키가 모든 인덱스는 기본적으로 있기 때문에 그러나, 우리는 그런 식으로 사용할 수 있습니다 :

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

여기에 작은 오타가 있다고 생각합니다. -이 작품은 : ([[b [ 'SP :'+ str (j + 1)] j for range (i + 1)] i 범위 안에 (len (b))] –

+0

당신은 정확하고, 나의 대답을 편집했습니다. – Sebastian