2016-05-07 6 views
0

タプルをグループの配列に追加しようとしています。各グループのグループ数またはタプル数は不明です。タプルをグループの配列に追加する

私はこのために非常に簡単な答えがあるはずですが、私の心は私のためにこの問題を処理する迅速に把握されています。

これは私の問題であり、私はこれを行うことができる必要があります。

array = [] 
array[0].append([1, 2]) # error because there isn't a '0' index 
array[0].append([7, 2]) 
array[0].append([89, -5]) 
array[1].append([2, 3]) 

ので、私はそれを私はシンプルに作られた別の方法をやっていないよ、なぜの応答の間違った種類を得ることはありませんなぜこのように働く必要があるのか​​を説明するプログラム。

def get_data(index, array): 
    # loop for an un-determined number of times, calculates differently depending on the index 
    one_or_more = 4 
    for i in range(0, one_or_more): 
     # do some calculations depending on index, which should differ for each loop 
     data1 = index * 3 + i 
     data2 = index * 4 + i 
     array.append([data1, data2]) 


def main(): 

    array = [] 
    array_index = 0 
    some_num = "110, 121, 122, 123, 124, 125, 130, 131, 323, 324, 325, 326, 340, 341, 342, 343".strip().split(", ") 
    for i in some_num: 
     get_data(int(i), array[array_index]) # error here with 'array[array_index]', because I can't index array with '0' because it's not initialized yet 
     array_index += 1 

if __name__ == "__main__":main() 
+1

リストの理解度を使用したくない理由がありますか? –

+0

関数を呼び出すたびに、新しいグループに追加するタプルが必要です。 @ IgnacioVazquez-Abrams、「リストの理解」がこの問題をどのように修正するかの例を教えていただけますか?関数が呼び出される回数がわからないので、Python配列を初期化したくないのです。 – brw59

+0

さらに説明すると、上記の「計算」にはSQLクエリが含まれており、インデックスはWebサイトのパスの一部を示しています私は – brw59

答えて

2

特定のインデックスの値が上書きされています。したがって、配列はあなたのタスクに適したデータ構造ではありません。私はdefaultdictを使用します。

from collections import defaultdict 

key_lists = defaultdict(list) 
key_lists[0].append([1,2]) 
key_lists[0].append([89, -5]) 
key_lists[1].append([2, 3]) 

print(key_lists) 
print(key_lists[0]) 

one_or_more = 4 

for i in range(0, one_or_more): 
    data1 = index * 3 + i 
    data2 = index * 4 + i 
    key_lists[i].append([data1, data2] 
+0

あなたの助けに感謝しています、これは私が探していたものです – brw59

+0

多機能性とパフォーマンスのdefaultdictは、実質的にどのようなタスクにとっても貴重です。コレクションライブラリには他の優れたデータ構造があります。たとえば、注文が重要な場合は、checkout collections.ordereddictです。 –

関連する問題