2017-01-10 6 views
-1

リスト1には、部品番号(一意ではない)、注文番号(空白)、ジョブ番号(空白)、色、数量フィールドの2つのリストがあります。リスト2には、部品番号(一意)、注文番号、およびジョブ番号フィールドがあります。私は(部品番号を照合することによって)リスト2からの情報に基づいて、リスト1に注文番号とジョブ番号を記入する必要がPython - リストの比較/照合

リスト1(mainlist)

部品番号(BM001)、 注文番号(EMPTY)(EMPTY)、 ジョブ番号、 色(黒)、(2)

部品番号(BM001) 数量、 注文番号(EMPTY)、(EMPTY) 仕事#、 カラー(レッド)、 数量(4)

部品番号(BM002)、(EMPTY) 注文番号、(EMPTY) 仕事#、 色(緑)、 数量(5)

リスト2(valueslist)

部品番号(BM001)、 注文番号(26534)、 ジョブ#(75)

部品番号(BM002)、 注文番号(26535)、 ジョブ#(76)

望ましい結果(

部品番号(BM001)、 注文番号(26534)、 ジョブ#(75)、 色(私だけで満たされた注文番号とジョブ#で、リスト1を必要とします)ブラック)、 数量(2)

部品番号(BM001)、注文番号(26534)、仕事(#75)、色(赤)、数量(4)

部品番号(BM002)、注文#(26535)、ジョブ番号(76)、カラー(グリーン)、数量(5)

ここまでは私のコードですが(下記参照)、データが正しく一致していません。私は、これを行うのがより簡単で(より効率的な)方法があると仮定していますが、この時点で私は立ち往生しています。

注:これはPythonを使用してRevit APIにアクセスするDynamo/Revit内にあります。

ありがとうございます。

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 
+1

リストに変換し、その後、Pythonの辞書を使っていますか?リストにはPythonでは「フィールド」がありませんので、具体的に記述してください。 –

+0

なぜ '#Part ... item0 = i [0]'を使用して、変数 'part'に名前を付けてコメントを削除するのですか? – MSeifert

答えて

1

最も簡単にはあなたのリストにある正確にどのような手動

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]}