Sort a list by elements of another listOrdered indices of a multiple product or sumImporting, sorting and exporting listsThe efficiency compare between Flatten[#, 1] & and Join @@ # &Lexicographic ordering of lists-of-lists?Problem with Custom Sort/Split/GatherApplying multiple functions to a single column in a tableList of (sub-)lists - query sub-lists by names?Find positions in which list elements are equalHow can I check if elements between lists are equal?comparing lists of strings

Term for the "extreme-extension" version of a straw man fallacy?

Customer Requests (Sometimes) Drive Me Bonkers!

Anatomically Correct Strange Women In Ponds Distributing Swords

Increase performance creating Mandelbrot set in python

How can a function with a hole (removable discontinuity) equal a function with no hole?

What is the opposite of 'gravitas'?

Is there a problem with hiding "forgot password" until it's needed?

Why not increase contact surface when reentering the atmosphere?

Two monoidal structures and copowering

Is `x >> pure y` equivalent to `liftM (const y) x`

Why Were Madagascar and New Zealand Discovered So Late?

How to pronounce the slash sign

How do scammers retract money, while you can’t?

Pole-zeros of a real-valued causal FIR system

Why escape if the_content isnt?

Gears on left are inverse to gears on right?

What is paid subscription needed for in Mortal Kombat 11?

Class Action - which options I have?

How do I rename a Linux host without needing to reboot for the rename to take effect?

Would this custom Sorcerer variant that can only learn any verbal-component-only spell be unbalanced?

Detecting if an element is found inside a container

Different result between scanning in Epson's "color negative film" mode and scanning in positive -> invert curve in post?

Why are there no referendums in the US?

What does "I’d sit this one out, Cap," imply or mean in the context?



Sort a list by elements of another list


Ordered indices of a multiple product or sumImporting, sorting and exporting listsThe efficiency compare between Flatten[#, 1] & and Join @@ # &Lexicographic ordering of lists-of-lists?Problem with Custom Sort/Split/GatherApplying multiple functions to a single column in a tableList of (sub-)lists - query sub-lists by names?Find positions in which list elements are equalHow can I check if elements between lists are equal?comparing lists of strings













8












$begingroup$


I know there are a plenty of other questions here which appear to be similar, however I did not found anything which could give me a hint.



I have two lists:



list1 = A, 12, B, 10, C, 4; (*ordered according to the second column*)
list2 = B, 5, A, 4, C, 1; (*ordered according to the second column*)


Now I want to sort list2according to the list1-order so the output should be:



(* A, 4, B, 5, C, 1 *)









share|improve this question











$endgroup$











  • $begingroup$
    to be more specific list2should be sorted according to the first column of list1
    $endgroup$
    – M.A.
    9 hours ago






  • 1




    $begingroup$
    Is there a better example to show what you want? Doesn't Sort[list2] give the desired output?
    $endgroup$
    – Jason B.
    4 hours ago






  • 1




    $begingroup$
    list2[[OrderingBy[list1, -#[[2]] &]]] in the next release...
    $endgroup$
    – Daniel Lichtblau
    4 hours ago















8












$begingroup$


I know there are a plenty of other questions here which appear to be similar, however I did not found anything which could give me a hint.



I have two lists:



list1 = A, 12, B, 10, C, 4; (*ordered according to the second column*)
list2 = B, 5, A, 4, C, 1; (*ordered according to the second column*)


Now I want to sort list2according to the list1-order so the output should be:



(* A, 4, B, 5, C, 1 *)









share|improve this question











$endgroup$











  • $begingroup$
    to be more specific list2should be sorted according to the first column of list1
    $endgroup$
    – M.A.
    9 hours ago






  • 1




    $begingroup$
    Is there a better example to show what you want? Doesn't Sort[list2] give the desired output?
    $endgroup$
    – Jason B.
    4 hours ago






  • 1




    $begingroup$
    list2[[OrderingBy[list1, -#[[2]] &]]] in the next release...
    $endgroup$
    – Daniel Lichtblau
    4 hours ago













8












8








8


1



$begingroup$


I know there are a plenty of other questions here which appear to be similar, however I did not found anything which could give me a hint.



I have two lists:



list1 = A, 12, B, 10, C, 4; (*ordered according to the second column*)
list2 = B, 5, A, 4, C, 1; (*ordered according to the second column*)


Now I want to sort list2according to the list1-order so the output should be:



(* A, 4, B, 5, C, 1 *)









share|improve this question











$endgroup$




I know there are a plenty of other questions here which appear to be similar, however I did not found anything which could give me a hint.



I have two lists:



list1 = A, 12, B, 10, C, 4; (*ordered according to the second column*)
list2 = B, 5, A, 4, C, 1; (*ordered according to the second column*)


Now I want to sort list2according to the list1-order so the output should be:



(* A, 4, B, 5, C, 1 *)






list-manipulation sorting






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 7 hours ago









MarcoB

37.9k556114




37.9k556114










asked 9 hours ago









M.A.M.A.

896




896











  • $begingroup$
    to be more specific list2should be sorted according to the first column of list1
    $endgroup$
    – M.A.
    9 hours ago






  • 1




    $begingroup$
    Is there a better example to show what you want? Doesn't Sort[list2] give the desired output?
    $endgroup$
    – Jason B.
    4 hours ago






  • 1




    $begingroup$
    list2[[OrderingBy[list1, -#[[2]] &]]] in the next release...
    $endgroup$
    – Daniel Lichtblau
    4 hours ago
















  • $begingroup$
    to be more specific list2should be sorted according to the first column of list1
    $endgroup$
    – M.A.
    9 hours ago






  • 1




    $begingroup$
    Is there a better example to show what you want? Doesn't Sort[list2] give the desired output?
    $endgroup$
    – Jason B.
    4 hours ago






  • 1




    $begingroup$
    list2[[OrderingBy[list1, -#[[2]] &]]] in the next release...
    $endgroup$
    – Daniel Lichtblau
    4 hours ago















$begingroup$
to be more specific list2should be sorted according to the first column of list1
$endgroup$
– M.A.
9 hours ago




$begingroup$
to be more specific list2should be sorted according to the first column of list1
$endgroup$
– M.A.
9 hours ago




1




1




$begingroup$
Is there a better example to show what you want? Doesn't Sort[list2] give the desired output?
$endgroup$
– Jason B.
4 hours ago




$begingroup$
Is there a better example to show what you want? Doesn't Sort[list2] give the desired output?
$endgroup$
– Jason B.
4 hours ago




1




1




$begingroup$
list2[[OrderingBy[list1, -#[[2]] &]]] in the next release...
$endgroup$
– Daniel Lichtblau
4 hours ago




$begingroup$
list2[[OrderingBy[list1, -#[[2]] &]]] in the next release...
$endgroup$
– Daniel Lichtblau
4 hours ago










3 Answers
3






active

oldest

votes


















6












$begingroup$

Permute[list2, FindPermutation[ list2[[All,1]] , list1[[All,1]] ] ]



A, 4, B, 5, C, 1







share|improve this answer











$endgroup$












  • $begingroup$
    Actually, I like your solution much better than mine. By the way, when I found out that my former solution was incorrect, I also realized that your solution should better be Permute[list2, FindPermutation[list2[[All, 1]], list1[[All, 1]]]].
    $endgroup$
    – Henrik Schumacher
    7 hours ago






  • 1




    $begingroup$
    Doh...fixed it. Both ways give the same answer, which leads to sloppy debugging.
    $endgroup$
    – MikeY
    7 hours ago


















6












$begingroup$

list1 = A, 12, B, 10, C, 4, D, 2;
list2 = A, 4, D, 11, B, 5, C, 1;

idx = Lookup[
AssociationThread[list1[[All, 1]] -> Range[Length[list1]]],
list2[[All, 1]]
];
result = list2;
result[[idx]] = list2;
result



A, 4, B, 5, C, 1, D, 11







share|improve this answer











$endgroup$












  • $begingroup$
    works well with the example lists. However, something goes wrong when I use other lists with Strings in the first columns instead of A, Band C....
    $endgroup$
    – M.A.
    6 hours ago


















4












$begingroup$

ugly but fast:



list2[[Ordering[list2[[All, 1]]][[Ordering[Ordering[list1[[All, 1]]]]]]]]



A, 4, B, 5, C, 1




even faster:



result = list2;
result[[Ordering[list1[[All, 1]]]]] = SortBy[list2, First];
result



A, 4, B, 5, C, 1




benchmarks



s = 10^7;
list1 = Transpose[PermutationReplace[Range[s], RandomPermutation[s]],
RandomInteger[0, 10, s]];
list2 = Transpose[PermutationReplace[Range[s], RandomPermutation[s]],
RandomInteger[0, 10, s]];

(* my first solution *)
result1 = list2[[Ordering[list2[[All, 1]]][[Ordering[Ordering[list1[[All, 1]]]]]]]]; //AbsoluteTiming//First
(* 8.6416 *)

(* my second solution *)
result2 = Module[L,
L = list2;
L[[Ordering[list1[[All, 1]]]]] = SortBy[list2, First];
L]; //AbsoluteTiming//First
(* 6.89593 *)

(* MikeY's solution *)
result3 = Permute[list2, FindPermutation[list2[[All, 1]], list1[[All, 1]]]]; //AbsoluteTiming//First
(* 15.808 *)

(* Henrik Schumacher's solution *)
result4 = Module[idx, L,
idx = Lookup[AssociationThread[list1[[All, 1]] -> Range[Length[list1]]], list2[[All, 1]]];
L = list2;
L[[idx]] = list2;
L]; //AbsoluteTiming//First
(* 31.7412 *)

(* make sure all methods agree *)
result1 == result2 == result3 == result4
(* True *)





share|improve this answer











$endgroup$












  • $begingroup$
    Thanks for the benchmark. I started down the Ordering road, but went for parsimony of expression. Mild bummer that it is at least twice as slow as the best method.
    $endgroup$
    – MikeY
    4 hours ago










Your Answer





StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
);
);
, "mathjax-editing");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "387"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194061%2fsort-a-list-by-elements-of-another-list%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























3 Answers
3






active

oldest

votes








3 Answers
3






active

oldest

votes









active

oldest

votes






active

oldest

votes









6












$begingroup$

Permute[list2, FindPermutation[ list2[[All,1]] , list1[[All,1]] ] ]



A, 4, B, 5, C, 1







share|improve this answer











$endgroup$












  • $begingroup$
    Actually, I like your solution much better than mine. By the way, when I found out that my former solution was incorrect, I also realized that your solution should better be Permute[list2, FindPermutation[list2[[All, 1]], list1[[All, 1]]]].
    $endgroup$
    – Henrik Schumacher
    7 hours ago






  • 1




    $begingroup$
    Doh...fixed it. Both ways give the same answer, which leads to sloppy debugging.
    $endgroup$
    – MikeY
    7 hours ago















6












$begingroup$

Permute[list2, FindPermutation[ list2[[All,1]] , list1[[All,1]] ] ]



A, 4, B, 5, C, 1







share|improve this answer











$endgroup$












  • $begingroup$
    Actually, I like your solution much better than mine. By the way, when I found out that my former solution was incorrect, I also realized that your solution should better be Permute[list2, FindPermutation[list2[[All, 1]], list1[[All, 1]]]].
    $endgroup$
    – Henrik Schumacher
    7 hours ago






  • 1




    $begingroup$
    Doh...fixed it. Both ways give the same answer, which leads to sloppy debugging.
    $endgroup$
    – MikeY
    7 hours ago













6












6








6





$begingroup$

Permute[list2, FindPermutation[ list2[[All,1]] , list1[[All,1]] ] ]



A, 4, B, 5, C, 1







share|improve this answer











$endgroup$



Permute[list2, FindPermutation[ list2[[All,1]] , list1[[All,1]] ] ]



A, 4, B, 5, C, 1








share|improve this answer














share|improve this answer



share|improve this answer








edited 7 hours ago

























answered 7 hours ago









MikeYMikeY

3,538714




3,538714











  • $begingroup$
    Actually, I like your solution much better than mine. By the way, when I found out that my former solution was incorrect, I also realized that your solution should better be Permute[list2, FindPermutation[list2[[All, 1]], list1[[All, 1]]]].
    $endgroup$
    – Henrik Schumacher
    7 hours ago






  • 1




    $begingroup$
    Doh...fixed it. Both ways give the same answer, which leads to sloppy debugging.
    $endgroup$
    – MikeY
    7 hours ago
















  • $begingroup$
    Actually, I like your solution much better than mine. By the way, when I found out that my former solution was incorrect, I also realized that your solution should better be Permute[list2, FindPermutation[list2[[All, 1]], list1[[All, 1]]]].
    $endgroup$
    – Henrik Schumacher
    7 hours ago






  • 1




    $begingroup$
    Doh...fixed it. Both ways give the same answer, which leads to sloppy debugging.
    $endgroup$
    – MikeY
    7 hours ago















$begingroup$
Actually, I like your solution much better than mine. By the way, when I found out that my former solution was incorrect, I also realized that your solution should better be Permute[list2, FindPermutation[list2[[All, 1]], list1[[All, 1]]]].
$endgroup$
– Henrik Schumacher
7 hours ago




$begingroup$
Actually, I like your solution much better than mine. By the way, when I found out that my former solution was incorrect, I also realized that your solution should better be Permute[list2, FindPermutation[list2[[All, 1]], list1[[All, 1]]]].
$endgroup$
– Henrik Schumacher
7 hours ago




1




1




$begingroup$
Doh...fixed it. Both ways give the same answer, which leads to sloppy debugging.
$endgroup$
– MikeY
7 hours ago




$begingroup$
Doh...fixed it. Both ways give the same answer, which leads to sloppy debugging.
$endgroup$
– MikeY
7 hours ago











6












$begingroup$

list1 = A, 12, B, 10, C, 4, D, 2;
list2 = A, 4, D, 11, B, 5, C, 1;

idx = Lookup[
AssociationThread[list1[[All, 1]] -> Range[Length[list1]]],
list2[[All, 1]]
];
result = list2;
result[[idx]] = list2;
result



A, 4, B, 5, C, 1, D, 11







share|improve this answer











$endgroup$












  • $begingroup$
    works well with the example lists. However, something goes wrong when I use other lists with Strings in the first columns instead of A, Band C....
    $endgroup$
    – M.A.
    6 hours ago















6












$begingroup$

list1 = A, 12, B, 10, C, 4, D, 2;
list2 = A, 4, D, 11, B, 5, C, 1;

idx = Lookup[
AssociationThread[list1[[All, 1]] -> Range[Length[list1]]],
list2[[All, 1]]
];
result = list2;
result[[idx]] = list2;
result



A, 4, B, 5, C, 1, D, 11







share|improve this answer











$endgroup$












  • $begingroup$
    works well with the example lists. However, something goes wrong when I use other lists with Strings in the first columns instead of A, Band C....
    $endgroup$
    – M.A.
    6 hours ago













6












6








6





$begingroup$

list1 = A, 12, B, 10, C, 4, D, 2;
list2 = A, 4, D, 11, B, 5, C, 1;

idx = Lookup[
AssociationThread[list1[[All, 1]] -> Range[Length[list1]]],
list2[[All, 1]]
];
result = list2;
result[[idx]] = list2;
result



A, 4, B, 5, C, 1, D, 11







share|improve this answer











$endgroup$



list1 = A, 12, B, 10, C, 4, D, 2;
list2 = A, 4, D, 11, B, 5, C, 1;

idx = Lookup[
AssociationThread[list1[[All, 1]] -> Range[Length[list1]]],
list2[[All, 1]]
];
result = list2;
result[[idx]] = list2;
result



A, 4, B, 5, C, 1, D, 11








share|improve this answer














share|improve this answer



share|improve this answer








edited 7 hours ago

























answered 9 hours ago









Henrik SchumacherHenrik Schumacher

58.1k580160




58.1k580160











  • $begingroup$
    works well with the example lists. However, something goes wrong when I use other lists with Strings in the first columns instead of A, Band C....
    $endgroup$
    – M.A.
    6 hours ago
















  • $begingroup$
    works well with the example lists. However, something goes wrong when I use other lists with Strings in the first columns instead of A, Band C....
    $endgroup$
    – M.A.
    6 hours ago















$begingroup$
works well with the example lists. However, something goes wrong when I use other lists with Strings in the first columns instead of A, Band C....
$endgroup$
– M.A.
6 hours ago




$begingroup$
works well with the example lists. However, something goes wrong when I use other lists with Strings in the first columns instead of A, Band C....
$endgroup$
– M.A.
6 hours ago











4












$begingroup$

ugly but fast:



list2[[Ordering[list2[[All, 1]]][[Ordering[Ordering[list1[[All, 1]]]]]]]]



A, 4, B, 5, C, 1




even faster:



result = list2;
result[[Ordering[list1[[All, 1]]]]] = SortBy[list2, First];
result



A, 4, B, 5, C, 1




benchmarks



s = 10^7;
list1 = Transpose[PermutationReplace[Range[s], RandomPermutation[s]],
RandomInteger[0, 10, s]];
list2 = Transpose[PermutationReplace[Range[s], RandomPermutation[s]],
RandomInteger[0, 10, s]];

(* my first solution *)
result1 = list2[[Ordering[list2[[All, 1]]][[Ordering[Ordering[list1[[All, 1]]]]]]]]; //AbsoluteTiming//First
(* 8.6416 *)

(* my second solution *)
result2 = Module[L,
L = list2;
L[[Ordering[list1[[All, 1]]]]] = SortBy[list2, First];
L]; //AbsoluteTiming//First
(* 6.89593 *)

(* MikeY's solution *)
result3 = Permute[list2, FindPermutation[list2[[All, 1]], list1[[All, 1]]]]; //AbsoluteTiming//First
(* 15.808 *)

(* Henrik Schumacher's solution *)
result4 = Module[idx, L,
idx = Lookup[AssociationThread[list1[[All, 1]] -> Range[Length[list1]]], list2[[All, 1]]];
L = list2;
L[[idx]] = list2;
L]; //AbsoluteTiming//First
(* 31.7412 *)

(* make sure all methods agree *)
result1 == result2 == result3 == result4
(* True *)





share|improve this answer











$endgroup$












  • $begingroup$
    Thanks for the benchmark. I started down the Ordering road, but went for parsimony of expression. Mild bummer that it is at least twice as slow as the best method.
    $endgroup$
    – MikeY
    4 hours ago















4












$begingroup$

ugly but fast:



list2[[Ordering[list2[[All, 1]]][[Ordering[Ordering[list1[[All, 1]]]]]]]]



A, 4, B, 5, C, 1




even faster:



result = list2;
result[[Ordering[list1[[All, 1]]]]] = SortBy[list2, First];
result



A, 4, B, 5, C, 1




benchmarks



s = 10^7;
list1 = Transpose[PermutationReplace[Range[s], RandomPermutation[s]],
RandomInteger[0, 10, s]];
list2 = Transpose[PermutationReplace[Range[s], RandomPermutation[s]],
RandomInteger[0, 10, s]];

(* my first solution *)
result1 = list2[[Ordering[list2[[All, 1]]][[Ordering[Ordering[list1[[All, 1]]]]]]]]; //AbsoluteTiming//First
(* 8.6416 *)

(* my second solution *)
result2 = Module[L,
L = list2;
L[[Ordering[list1[[All, 1]]]]] = SortBy[list2, First];
L]; //AbsoluteTiming//First
(* 6.89593 *)

(* MikeY's solution *)
result3 = Permute[list2, FindPermutation[list2[[All, 1]], list1[[All, 1]]]]; //AbsoluteTiming//First
(* 15.808 *)

(* Henrik Schumacher's solution *)
result4 = Module[idx, L,
idx = Lookup[AssociationThread[list1[[All, 1]] -> Range[Length[list1]]], list2[[All, 1]]];
L = list2;
L[[idx]] = list2;
L]; //AbsoluteTiming//First
(* 31.7412 *)

(* make sure all methods agree *)
result1 == result2 == result3 == result4
(* True *)





share|improve this answer











$endgroup$












  • $begingroup$
    Thanks for the benchmark. I started down the Ordering road, but went for parsimony of expression. Mild bummer that it is at least twice as slow as the best method.
    $endgroup$
    – MikeY
    4 hours ago













4












4








4





$begingroup$

ugly but fast:



list2[[Ordering[list2[[All, 1]]][[Ordering[Ordering[list1[[All, 1]]]]]]]]



A, 4, B, 5, C, 1




even faster:



result = list2;
result[[Ordering[list1[[All, 1]]]]] = SortBy[list2, First];
result



A, 4, B, 5, C, 1




benchmarks



s = 10^7;
list1 = Transpose[PermutationReplace[Range[s], RandomPermutation[s]],
RandomInteger[0, 10, s]];
list2 = Transpose[PermutationReplace[Range[s], RandomPermutation[s]],
RandomInteger[0, 10, s]];

(* my first solution *)
result1 = list2[[Ordering[list2[[All, 1]]][[Ordering[Ordering[list1[[All, 1]]]]]]]]; //AbsoluteTiming//First
(* 8.6416 *)

(* my second solution *)
result2 = Module[L,
L = list2;
L[[Ordering[list1[[All, 1]]]]] = SortBy[list2, First];
L]; //AbsoluteTiming//First
(* 6.89593 *)

(* MikeY's solution *)
result3 = Permute[list2, FindPermutation[list2[[All, 1]], list1[[All, 1]]]]; //AbsoluteTiming//First
(* 15.808 *)

(* Henrik Schumacher's solution *)
result4 = Module[idx, L,
idx = Lookup[AssociationThread[list1[[All, 1]] -> Range[Length[list1]]], list2[[All, 1]]];
L = list2;
L[[idx]] = list2;
L]; //AbsoluteTiming//First
(* 31.7412 *)

(* make sure all methods agree *)
result1 == result2 == result3 == result4
(* True *)





share|improve this answer











$endgroup$



ugly but fast:



list2[[Ordering[list2[[All, 1]]][[Ordering[Ordering[list1[[All, 1]]]]]]]]



A, 4, B, 5, C, 1




even faster:



result = list2;
result[[Ordering[list1[[All, 1]]]]] = SortBy[list2, First];
result



A, 4, B, 5, C, 1




benchmarks



s = 10^7;
list1 = Transpose[PermutationReplace[Range[s], RandomPermutation[s]],
RandomInteger[0, 10, s]];
list2 = Transpose[PermutationReplace[Range[s], RandomPermutation[s]],
RandomInteger[0, 10, s]];

(* my first solution *)
result1 = list2[[Ordering[list2[[All, 1]]][[Ordering[Ordering[list1[[All, 1]]]]]]]]; //AbsoluteTiming//First
(* 8.6416 *)

(* my second solution *)
result2 = Module[L,
L = list2;
L[[Ordering[list1[[All, 1]]]]] = SortBy[list2, First];
L]; //AbsoluteTiming//First
(* 6.89593 *)

(* MikeY's solution *)
result3 = Permute[list2, FindPermutation[list2[[All, 1]], list1[[All, 1]]]]; //AbsoluteTiming//First
(* 15.808 *)

(* Henrik Schumacher's solution *)
result4 = Module[idx, L,
idx = Lookup[AssociationThread[list1[[All, 1]] -> Range[Length[list1]]], list2[[All, 1]]];
L = list2;
L[[idx]] = list2;
L]; //AbsoluteTiming//First
(* 31.7412 *)

(* make sure all methods agree *)
result1 == result2 == result3 == result4
(* True *)






share|improve this answer














share|improve this answer



share|improve this answer








edited 4 hours ago

























answered 6 hours ago









RomanRoman

3,7251020




3,7251020











  • $begingroup$
    Thanks for the benchmark. I started down the Ordering road, but went for parsimony of expression. Mild bummer that it is at least twice as slow as the best method.
    $endgroup$
    – MikeY
    4 hours ago
















  • $begingroup$
    Thanks for the benchmark. I started down the Ordering road, but went for parsimony of expression. Mild bummer that it is at least twice as slow as the best method.
    $endgroup$
    – MikeY
    4 hours ago















$begingroup$
Thanks for the benchmark. I started down the Ordering road, but went for parsimony of expression. Mild bummer that it is at least twice as slow as the best method.
$endgroup$
– MikeY
4 hours ago




$begingroup$
Thanks for the benchmark. I started down the Ordering road, but went for parsimony of expression. Mild bummer that it is at least twice as slow as the best method.
$endgroup$
– MikeY
4 hours ago

















draft saved

draft discarded
















































Thanks for contributing an answer to Mathematica Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194061%2fsort-a-list-by-elements-of-another-list%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Isurus Índice Especies | Notas | Véxase tamén | Menú de navegación"A compendium of fossil marine animal genera (Chondrichthyes entry)"o orixinal"A review of the Tertiary fossil Cetacea (Mammalia) localities in wales port taf Museum Victoria"o orixinalThe Vertebrate Fauna of the Selma Formation of Alabama. Part VII. Part VIII. The Mosasaurs The Fishes50419737IDsh85068767Isurus2548834613242066569678159923NHMSYS00210535017845105743

Король Коль Исторические данные | Стихотворение | Примечания | Навигацияверсии1 правкаверсии1 правкаA New interpretation of the 'Artognou' stone, TintagelTintagel IslandАрхивировано

Roughly how much would it cost to hire a team of dwarves to build a home in the mountainside? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)How much does a house cost?How long does it take to mine rock?How much does a house cost?How much gold would the construction of a forge cost?How much does a door cost?How much would it cost to make this magic item?How much would a glue bomb cost?How much does mandrake root cost?How much does a slave cost?How much does equipment cost?How much do sheep cost?How much would firearms cost?