2016-08-19 51 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") 
相关问题