はあなたのリストは以下のとおりです。ここで
tst = {{{1, foo1}, {2, foo2}, {3, foo3}}, {{1, bar1}, {2, bar2}, {3, bar3}}}
が一つの方法です:
In[84]:=
Flatten/@Transpose[{#[[All,1,1]],#[[All,All,2]]}]&@
GatherBy[Flatten[tst,1],First]
Out[84]= {{1,foo1,bar1},{2,foo2,bar2},{3,foo3,bar3}}
EDIT
ここでは、楽しみのためだけに、完全に異なるバージョンです:
In[106]:=
With[{flat = Flatten[tst,1]},
With[{rules = Dispatch[[email protected]@@flat]},
Map[{#}~Join~ReplaceList[#,rules]&,DeleteDuplicates[flat[[All,1]]]]]]
Out[106]= {{1,foo1,bar1},{2,foo2,bar2},{3,foo3,bar3}}
[OK]を
In[113]:=
Module[{f},f[x_]:={x};
Apply[(f[#1] = {f[#1],#2})&,tst,{2}];
Flatten/@Most[DownValues[f]][[All,2]]]
Out[113]= {{1,foo1,bar1},{2,foo2,bar2},{3,foo3,bar3}}
EDIT 3
を、すべての考えの方のために:
EDIT 2
そして、ここではその結果を蓄積するためにリンクされたリストと内部機能を使用して、さらに別の方法であります上記の複雑すぎる、ここでは本当に簡単なルールベースのソリューションです:
In[149]:=
GatherBy[Flatten[tst, 1], First] /. els : {{n_, _} ..} :> {n}~Join~els[[All, 2]]
Out[149]= {{1, foo1, bar1}, {2, foo2, bar2}, {3, foo3, bar3}}
:
参照をより良い。あなたの例は推測するほど多くのことを残します。 –
はい、具体的に質問を更新してください。現在はかなり曖昧です。 –
barrycarter、私はまだ明確な質問を待っています。 –