Python列表比较/匹配

2024-10-06 07:34:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列表-列表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访问revitapi。你知道吗

先谢谢你。你知道吗

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

Tags: in订单列表数量颜色作业空白黑色
1条回答
网友
1楼 · 发布于 2024-10-06 07:34:25

最简单的方法是使用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]}

相关问题 更多 >