Python-列表比较/匹配

Python-列表比较/匹配,python,list,python-3.x,Python,List,Python 3.x,我有两个列表-列表1有零件号(非唯一)、订单号(空白)、作业号(空白)、颜色和数量字段。列表2包含零件号(唯一)、订单号和作业号字段。我需要根据列表2中的信息(通过匹配零件#),在列表1中填写订单号和作业号 列表1(主列表) 第#(BM001)部分, 订单#(空), 作业#(空), 颜色(黑色), 数量(2) 第#(BM001)部分, 订单#(空), 作业#(空), 颜色(红色), 数量(4) 第#(BM002)部分, 订单#(空), 作业#(空), 颜色(绿色), 数量(5) 列表2(价值列表

我有两个列表-列表1有零件号(非唯一)、订单号(空白)、作业号(空白)、颜色和数量字段。列表2包含零件号(唯一)、订单号和作业号字段。我需要根据列表2中的信息(通过匹配零件#),在列表1中填写订单号和作业号

列表1(主列表)

第#(BM001)部分, 订单#(空), 作业#(空), 颜色(黑色), 数量(2)

第#(BM001)部分, 订单#(空), 作业#(空), 颜色(红色), 数量(4)

第#(BM002)部分, 订单#(空), 作业#(空), 颜色(绿色), 数量(5)

列表2(价值列表)

第#(BM001)部分, #(26534)号命令, 工作(75)

第#(BM002)部分, 第#(26535)号命令, 工作(76)

期望的结果(我只需要列表1,并填写订单和工作)

第#(BM001)部分, #(26534)号命令, 工作#(75), 颜色(黑色), 数量(2)

零件(BM001)、订单(26534)、工作(75)、颜色(红色)、数量(4)

零件(BM002)、订单(26535)、工作(76)、颜色(绿色)、数量(5)

这是我迄今为止的代码(见下文),但它与数据不匹配。我假设有一个更简单(更有效)的方法来做这件事,但在这一点上我被卡住了

注意:这在Dynamo/Revit中,它利用Python访问Revit API

先谢谢你

dataEnteringNode = IN
mainlist=IN[0]
valueslist=IN[1]
outlist=[]

for i in mainlist:
    #Part #
    item0=i[0]

    #Order #
    item1=""

    #Job #
    item2=""

    #Color
    item3=i[3]

    #QTY.
    item4=i[4]


    for j in valueslist:
        #Job # and Task #
        if ( i[0] == j[0] ):
            item1=j[1]
            item2=j[2]


    #Write Data
    outlist.append(item0)
    outlist.append(item1)
    outlist.append(item2)
    outlist.append(item3)
    outlist.append(item4)


#Assign your output to the OUT variable.
OUT = outlist

最简单的方法是使用python dict,然后手动将其转换为list

data = {}
for i in mainlist:

    data[i[0]] = {'color' : i[3], 'quantity' : i[4]}

for j in valuelist:

    if data.get(i[0]):
        data[i[0]] = {**data[i[0]], 'order' : i[1], 'job' : i[2]}
    else:
        data[i[0]] = {'order' : i[1], 'job' : i[2]}

你的清单上到底有什么?列表在Python中没有“字段”,所以请具体说明。为什么要使用
#Part。。。item0=i[0]
而不是命名变量
part
并删除注释?