2016-08-04 2 views
-1
[{'month': 7.0, 'sumd': 11}, {'month': 8.0, 'sumd': 20}] 

나는이 목록을 가지고 있습니다. 이것은 월과 일부 값의 집합입니다. 이런 식으로하기 위해 0으로 어떻게 올라가는가?Python dicts의 위로 가기

[0, 0, 0, 0, 0, 0, 0, 11, 20, 0, 0, 0, 0] 

편집 이 첫 번째 목록은 sumd에 뭔가가있는 경우에만이 개월 dicts 있습니다. 달이 합계에있는 어떤 정보도없는 경우에 명부에 없을 것이다. 난 당신이 원하는 무엇을 이해하면, - (어떤 달은 첫 번째 목록에 있지 않은 경우 0을 설정하지만 모든 개월)

+2

'위로 가기', 사전과 배열 간의 관계 및 변경하려는 내용을 명확히 설명하십시오. – Jonas

+3

정보를 제공하기에 충분히 친절하십니까? – Julien

+0

1 단계 : 0 목록을 만듭니다. 2 단계 : 사전 목록을 반복하면서 배열의 해당 색인을 업데이트합니다. 우리는 코드를 작성하지 않을 것입니다. 특히 이미 시도한 것에 대한 정보를 제공하지 않을 경우 특히 그렇습니다. – Greg

답변

1

는 그러나 두 번째 목록에서 몇 달 번호로 sumd 순서 만 값을 필요 결과는 13이 아닌 12 개 요소의 목록이됩니다.

따라서 달 번호 (월 키 값)를 1 년 (12 개 요소)을 나타내는 배열에 넣을 수없는 경우 다음을 수행 할 수 있습니다.

month_dictionaries = [{'month': 7.0, 'sumd': 11}, {'month': 8.0, 'sumd': 20}] 

result = [0] * 12 

for d in month_dictionnaries: 
    if 'sumd' in d.keys(): 
     result[int(d['month']) - 1] = d['sumd'] 
+0

정확히 감사합니다! – mrsolupo

+0

.keys를 호출하지 말아라. 불필요한 함수 호출이나 최악의 경우'O (1)'검색을'O (n)'으로 바꾼다 –

+0

''sumd ''가 있는지 테스트해야한다. 사전의 키. 당신은 무엇을 제안합니까? '시도 : d [ 'sumd'] except keyError : continue'? –

0

제공하신 샘플의 경우 :

values = [0,0,0,0,0,0,0,0,0,0,0,0] 
month_values = [{'month': 7.0, 'sumd': 11}, {'month': 8.0, 'sumd': 20}] 

for m in month_values: 
    values[(int(m['month'])-1)]=m['sumd'] 
+0

왜'-1' .... 그의 예제는 7 번째 요소 인 – depperm

+0

@depperm입니다. 왜냐하면 파이썬에서 0이 아닌 1부터 인덱싱을 시작하기 때문입니다. – grubjesic

+0

나는 그의 예제를 보았습니다. 그의 월은 이미 0에서부터 계산 될 수 있습니다. – depperm

0

중복되는 달을 더하고 싶다는 의미로 사용하기 위해 sumd을 사용합니다. 12 개월이 될 수 있도록 색인 생성을 수정할 수 있습니다.

data = [{'month': 7.0, 'sumd': 11}, {'month': 8.0, 'sumd': 20}] 

months = [0]*12 

for d in data: 
    idx = int(d['month']) - 1 
    v = d['sumd'] 
    months[idx] += v 
관련 문제