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访问Revit API 先谢谢你Python-列表比较/匹配,python,list,python-3.x,Python,List,Python 3.x,我有两个列表-列表1有零件号(非唯一)、订单号(空白)、作业号(空白)、颜色和数量字段。列表2包含零件号(唯一)、订单号和作业号字段。我需要根据列表2中的信息(通过匹配零件#),在列表1中填写订单号和作业号 列表1(主列表) 第#(BM001)部分, 订单#(空), 作业#(空), 颜色(黑色), 数量(2) 第#(BM001)部分, 订单#(空), 作业#(空), 颜色(红色), 数量(4) 第#(BM002)部分, 订单#(空), 作业#(空), 颜色(绿色), 数量(5) 列表2(价值列表
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
并删除注释?