2017-11-19 5 views
0

1週間に1日を表す7つの辞書を生成しています。辞書は2つのリストを圧縮して生成されます。すべて正常に動作していますが、削除したいコードには冗長性があります。例えば、私たちはコードの最初のリストの要素からさまざまな辞書の名前を割り当てます。

day_names = ['mon','tue','wed','thurs','fri','sat','sun'] 

time_values = np.linspace(1,23,23,dtype='int') # print from 1,2...23 

for day_iterator in range(1,7+1): 


    number_of_clients = [] # create empty list that will hold number of clients 
    for i in range(1,24,1): 
     rand_value = random.randint(1,20) # generate number of clients 
     number_of_clients.append(rand_value) 

    if day_iterator == 1: 
     mon = dict(zip(time_values,number_of_clients)) 

    elif day_iterator == 2: 
     tue = dict(zip(time_values,number_of_clients)) 

    elif day_iterator == 3: 
     wed = dict(zip(time_values,number_of_clients)) 

    elif day_iterator == 4: 
     thurs = dict(zip(time_values,number_of_clients)) 

    elif day_iterator == 5: 
     fri = dict(zip(time_values,number_of_clients)) 

    elif day_iterator == 6: 
     sat = dict(zip(time_values,number_of_clients)) 

    elif day_iterator == 7: 
     sun = dict(zip(time_values,number_of_clients)) 

ので、基本的に代わりsunmonを使用しての私は何を探してるんですか

str(day_names[i+1]) = dict(zip(time_values,number_of_clients)) 
+0

)これらのディクテーションを名前空間内で浮動させるか、リスト/ dictなどで集計しますか? – roganjosh

+0

この場合、辞書は私の目的を解決します –

答えて

0

のようなものを使用したいがlocals()で見てみましょう:

locals()[day_names[i-1]] = ... 

も参照してくださいglobals()

ただし、locals()またはglobals()はややお勧めです。たとえば、辞書を使用してこれらの値を集計することを検討してください(例:

+0

IndexError:リストインデックスが範囲外です –

+1

リストのインデックスはゼロから始まります。 'i'が1から7の範囲であれば、 'i-1' – fferri

関連する問題