2016-11-24 141 views
2

Python 3. Windows 10.替換列表中的值

我有一個分層列表,我想用指定的值更改它們的值。

例如:我有層次列表

l = [[[0, 4], 1], [2, 3], 5]] 

,我有一本字典

{0: 'da-1.txt', 
1: 'da-2.txt', 
2: 'en-1.txt', 
3: 'en-2.txt', 
4: 'it-1.txt', 
5: 'it-2.txt'} 

我想替換字典的值列表中的值,相應地沒有打破列表層次結構結構體。

輸出應該是這樣的:

l = [[['da-1.txt', 'it-1.txt'], 'da-2.txt'], ['en-1.txt', 'en-2.txt], 'it-2.txt'] 
+0

你試圖完成這種語言? – Becojo

+1

Ofc。 Python 3.對不起,這是我的第一篇文章。 –

回答

0

你可以走了過來列表,併爲每個元素檢查它是否是一個列表。如果不存在,則將其替換爲字典的相應元素(如果存在)。如果是,遞歸的使用相同的算法:

def rec_replace(l, d): 
    for i in range(len(l)): 
     if isinstance(l[i], list): 
      rec_replace(l[i], d) 
     else : 
      l[i] = d.get(l[i], l[i]) 

注:
此實現就地更換名單的元素的。或者,可以使用類似的方法來返回新列表。

+0

非常感謝。正是我想要的。 –