2016-08-19 5 views
0

私はPythonのリストのリストを反復しています。ネストされたリストのいくつかの要素の日付書式を変更したいと思います。私は試しました:Pythonでネストされたリストの要素を更新するには?

for dividend in dividend_data: 
    for date in dividend[1], dividend[3], dividend[4], dividend[5]: 
     date = datetime.strptime(date, '%m/%d/%Y').strftime("%Y-%m-%d") 

しかし、 "日付"変数は元のリスト要素に戻っていません。

dividend[1] = datetime.strptime(dividend[1], '%m/%d/%Y').strftime("%Y-%m-%d") 
dividend[3] = datetime.strptime(dividend[3], '%m/%d/%Y').strftime("%Y-%m-%d") 
dividend[4] = datetime.strptime(dividend[4], '%m/%d/%Y').strftime("%Y-%m-%d") 
dividend[5] = datetime.strptime(dividend[5], '%m/%d/%Y').strftime("%Y-%m-%d") 

しかし、これを処理するにはより良い方法が必要でしょうか?

答えて

1

私はあなたが実際に日付変数を変更しているとは思わない。 In

for date in dividend[1], dividend[3], dividend[4], dividend[5]: 

dateという変数を作成しています。この変数を変更することは、その配列の実際の値を変更することと同じではありません。何をする必要があるかもしれないことは何が起こっている

for i in 1, 3, 4, 5: 
    dividend[i] = datetime.strptime(dividend[i], '%m/%d/%Y').strftime("%Y-%m-%d") 
0
for dividend in dividend_data: 
    for index in (1,3,4,5): 
     date = dividend[index] 
     dividend[index] = datetime.strptime(date, '%m/%d/%Y').strftime("%Y-%m-%d") 

であるあなたがちょうどすぐに上書きされ、ローカル変数の値に新しいものを代入している、リストの要素を変更していないということです次のことで、リストには決して影響しません。

したがって、新しい変数を割り当てるのではなく、リスト内の項目を変更して、インデックスを取得して上のようにします。

0

これは実際にネストされたリストとは関係ありませんが、一般的なリストです。それらを所定の場所で編集することはできますが、要素のコピーを使用して編集することはできません。

for idx in (1,3,4,5): 
    dividend[idx] = datetime.strptime(dividend[idx], '%m/%d/%Y').strftime("%Y-%m-%d") 
0

代わりにインデックスを使用してください。問題は、dateは配列の値とは別の変数なので、新しい日付形式と同じ値に設定するだけでその変数が再割り当てされます。代わりにこれを試してください:

for dividend in dividend_data: 
    for date_num in range(1, 6): 
     dividend[date_num] = datetime.strptime(dividend[date_num], '%m/%d/%Y').strftime("%Y-%m-%d") 
関連する問題