Something like the following: Map[Sort[#] &, list] (*{{{a, 1}, {b, 3}, {c, 5}}, {{a, 5}, {b, 1}, {c, 3}}, {{a, 5}, {b, 3}, {c, 1}}, {{a, 1}, {b, 5}, {c, 3}}}*) A first approximation: MyOrderList[list_List, order_?(Positive[#] && Element[#, Integers] &)] := Block[{slist, perm, mylist}, slist := Map[Sort, list]; perm = Mean[Map[Composition[Length, Permutations[#] &], slist]]; mylist := Table[Table[Extract[Select[Tuples[slist[[i]], Length[slist[[i]]]], ContainsAll[#, slist[[i]]] &], j], {i, 1, Length[slist]}], {j, 1, perm}][[order]]; Return[If[order <= perm, mylist, HoldForm[MyOrderList]]]; ]; Tests: MyOrderList[list, 1] (*{{{a, 1}, {b, 3}, {c, 5}}, {{a, 5}, {b, 1}, {c, 3}}, {{a, 5}, {b, 3}, {c, 1}}, {{a, 1}, {b, 5}, {c, 3}}}*) MyOrderList[list, 2] (*{{{a, 1}, {c, 5}, {b, 3}}, {{a, 5}, {c, 3}, {b, 1}}, {{a, 5}, {c, 1}, {b, 3}}, {{a, 1}, {c, 3}, {b, 5}}}*) MyOrderList[list, 3] (*{{{b, 3}, {a, 1}, {c, 5}}, {{b, 1}, {a, 5}, {c, 3}}, {{b, 3}, {a, 5}, {c, 1}}, {{b, 5}, {a, 1}, {c, 3}}}*) MyOrderList[list,4] (*{{{b, 3}, {c, 5}, {a, 1}}, {{b, 1}, {c, 3}, {a, 5}}, {{b, 3}, {c, 1}, {a, 5}}, {{b, 5}, {c, 3}, {a, 1}}}*) MyOrderList[list,5] (*{{{c, 5}, {a, 1}, {b, 3}}, {{c, 3}, {a, 5}, {b, 1}}, {{c, 1}, {a, 5}, {b, 3}}, {{c, 3}, {a, 1}, {b, 5}}}*) MyOrderList[list,6] (*{{{c, 5}, {b, 3}, {a, 1}}, {{c, 3}, {b, 1}, {a, 5}}, {{c, 1}, {b, 3}, {a, 5}}, {{c, 3}, {b, 5}, {a, 1}}}*) Another approach using the idea of [@cvgmt][1]: MyOrderList[list_List, order_List] := Block[{slist, sorder, ordering, mylist}, slist := Map[Sort, list]; ordering := Extract[Permute[Ordering[Sort[order]], Ordering[#]] & /@ Permutations[order], {1}];(*@cvgmt*) mylist := Table[slist[[i]][[ordering]], {i, 1, Length[slist]}]; Return[mylist]; ]; Test: MyOrderList[list, {b, c, a}] (*{{{b, 3}, {c, 5}, {a, 1}}, {{b, 1}, {c, 3}, {a, 5}}, {{b, 3}, {c, 1}, {a, 5}}, {{b, 5}, {c, 3}, {a, 1}}}*) Another approach using the idea of [@kglr][1]: MyOrderList[list_List, order_List] := Block[{slist, sorder, ordering, mylist}, slist := Map[Sort, list]; ordering := Extract[Map[Ordering@*Ordering, Permutations[order]], {1}];(*@kglr*) mylist := Table[slist[[i]][[ordering]], {i, 1, Length[slist]}]; Return[mylist]; ]; Test: MyOrderList[list, {c, a, b}] (*{{{c, 5}, {a, 1}, {b, 3}}, {{c, 3}, {a, 5}, {b, 1}}, {{c, 1}, {a, 5}, {b, 3}}, {{c, 3}, {a, 1}, {b, 5}}}*) [1]: https://mathematica.stackexchange.com/questions/258525/a-question-about-ordering-command/258528#258528