2016-08-19 79 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") 

但是「date」變量沒有帶回原始列表元素。我可以通過單獨處理它們來做到這一點:

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

我不認爲你實際上正在改變日期變量。在

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

改用索引。問題是日期與數組中的值是一個單獨的變量,因此將其設置爲等於新日期格式只是重新分配該變量。試試這個:

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") 
相關問題