2016-08-04 12 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] 

EDIT この最初のリストはsumdで何かを持っているだけで、この数ヶ月でdictsを持っています。月がsumdの情報を持っていなければ、それはリストには含まれません。

しかし、第二のリストに私は数ヶ月数でsumd順から値のみを必要とする - 私はあなたが何をしたいのか理解している場合

+2

「トップアップ」、辞書と配列の関係、そして変更したいことを明確にしてください。 – Jonas

+3

あなたは何らかの情報を提供するのに十分親切でしょうか? – Julien

+0

ステップ1:ゼロのリストを作成します。ステップ2:辞書のリストをループし、配列内の適切なインデックスを更新します。私たちはあなたのためにコードを書くつもりはありません。特に、あなたがすでに試したことに関する情報を何も与えていない場合は特にそうです。 – Greg

答えて

1

(ただし、すべての月を持つ任意の数ヶ月は、最初のリストになかった場合は、0を設定)、結果は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 '辞書のキー。 あなたは何をお勧めしますか? 'try:d ['sumd'] 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です。なぜなら、Pythonで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 
関連する問題