辞書のリストを使用して2つの異なる配列をマージ:私はそのように見える2つのアレイのマージしようとしているのpython
最初:
[650001.88, 300442.2, 18.73, 0.575, 650002.094, 300441.668, 18.775]
[650001.96, 300443.4, 18.7, 0.65, 650002.571, 300443.182, 18.745]
[650002.95, 300442.54, 18.82, 0.473, 650003.056, 300442.085, 18.745]
[650005.28, 300444.76, 18.93, 0.463, 650005.368, 300444.395, 18.659]
[650006.17, 312903.26, 14.68, 0.442, 650006.146, 312902.819, 14.68]
[650006.18, 312902.89, 14.91, 0.243, 650006.146, 312902.819, 14.68]
[650006.17, 300445.16, 18.75, 0.402, 650006.286, 300444.792, 18.635]
[650006.8, 312904.65, 14.54, 0.479, 650006.904, 312905.096, 14.68]
[650006.78, 312905.06, 14.81, 0.184, 650006.904, 312905.096, 14.68]
[650011.84, 300447.74, 18.56, 0.546, 650011.836, 300447.197, 18.507]
[650012.96, 300446.92, 18.71, 0.553, 650013.238, 300446.497, 18.488]
[650014.07, 300447.51, 18.41, 0.614, 650014.2, 300446.914, 18.473]
[650001.18, 312862.23, 8.79, 40.338, 650014.526, 312899.965, 13.797]
[650001.19, 312861.88, 9.15, 40.619, 650014.526, 312899.965, 13.797]
秒:
[300441.668, 1]
[300443.182, 2]
[300442.085, 3]
[300444.395, 4]
[312902.819, 5]
[300444.792, 6]
[312905.096, 7]
[300447.197, 8]
[300446.497, 9]
[300446.914, 10]
[312899.965, 11]
から7番目の列を最初の配列は2番目の配列の最初の列と同じ引数を共有します。私の最初の配列は50万のレコードから成り、2番目の配列は50.000です。私は共有列に基づいて2つの配列をマージしようとしています。
私の最後の列は、私はそれを行うために管理が、今のところ唯一の問題は私のD1辞書が誤った出力で終わる重複キーを上書きすることである
ような715316 650001.88 300442.2 18.73 0.575 650002.094 300441.668 18.775 1
715317 650001.96 300443.4 18.7 0.65 650002.571 300443.182 18.745 2
715310 650002.95 300442.54 18.82 0.473 650003.056 300442.085 18.745 3
715304 650005.28 300444.76 18.93 0.463 650005.368 300444.395 18.659 4
129733 650006.17 312903.26 14.68 0.442 650006.146 312902.819 14.68 5
129739 650006.18 312902.89 14.91 0.243 650006.146 312902.819 14.68 5
715303 650006.17 300445.16 18.75 0.402 650006.286 300444.792 18.635 6
129851 650006.8 312904.65 14.54 0.479 650006.904 312905.096 14.68 7
129852 650006.78 312905.06 14.81 0.184 650006.904 312905.096 14.68 7
715302 650011.84 300447.74 18.56 0.546 650011.836 300447.197 18.507 8
715301 650012.96 300446.92 18.71 0.553 650013.238 300446.497 18.488 9
715250 650014.07 300447.51 18.41 0.614 650014.2 300446.914 18.473 10
129121 650001.18 312862.23 8.79 40.338 650014.526 312899.965 13.797 11
129127 650001.19 312861.88 9.15 40.619 650014.526 312899.965 13.797 11
129128 650001.19 312861.54 9.53 40.897 650014.526 312899.965 13.797 11
になります。
私は推測すると、通常の辞書ではなく辞書のリストを使用する必要があります。しかし、私はどのように私の配列を重複したキーを持つディクショナリのリストに変換するのかわかりません。
EDIT:
私は@zipaメソッドを使用しよう:
d2 = dict((x[0], x[1:]) for x in sec)
finaldict = [item + d2[item[5]] for item in first]
print(finaldict[0])
[650001.88, 300442.2, 18.73, 0.575, 650002.094, 300441.668, 18.775]
私は推測最後に値を追加していない理由は、私の辞書が作成される方法です。私はd2 [item [4]]をチェックすると、私は[1]だけでなく私[1]を作成します。私のデータでは例のitem [5]と同じ値を持っているので、item [4]
私がアクセスすると、これが作成されます。
しかし、まだ私のマージされた配列に値を追加していません。
なぜ値ではなく、第2_dictから項目[5]を取っているのか説明できますか? – Losbaltica
私は 'item [5]'にマッチするkeyの値を取っています。 – zipa
何らかの理由で新しいリストに値を追加していないためです。私がfirst_second [0]を印刷するとき、私は8でなく7つだけのレコードを得ました。だから私は最終的な出力に新しいレコードを追加していないと思います。 – Losbaltica