2016-12-09 43 views
2
l1 = [('x', [1]), ('y', [1]) ('z', [2]] 
l2 = ['1', '2', '3'] 

假定可以通過'x'和'y'完成'1',並且'z'可以執行'2' 「:迭代任務列表以獲得可以在python中執行翻譯的翻譯器

l3 = [[['1'['x', 'y']], ['2'['z']], ['3'[]] 

於是我可以做一個解開之間的‘X’和‘Y’使用aditional的paramenters對於redability的緣故,我不會是把這裏除非問。

這就是我來這麼遠:

x = [] 
for i in l2: 
    for j in l1: 
     if i in j[1][0]: 
       x.append(j[0]) 

這使我有可能的L1,但我有在的方式加入L2部分沒有運氣,我可以把「X」和'y'。由於這是一個學校項目,我不能使用zip之類的工具。

回答

0

建立與按鍵是的l2元素,初始化它們的值列表的dict,然後遍歷l1元素追加element[0]到與其匹配element[1]關鍵的名單。

l3 = {} 
for elem in l2: 
    l3[elem] = [] 

# Look for matches in l1 
for letter, tasks in l2: 
    for task in tasks: 
     l3[str(task)].append(letter) 

在這個算法,l3將是一個dict代替list這使得它更容易地訪問每個任務的值。如果您確實需要成爲list,請將其轉換爲一個。

+0

感謝它得到了一些修改,如果你想在這裏發佈,請再次感謝 – stasisOo