Min and Max of a list of Associations











up vote
3
down vote

favorite












I am trying to find the minimum values for all elements in a list of associations, below is an example



x = {<|"a"-> 4, "b"->9, "c"->15|>, <|"a"->21, "b"->11, "c"->1|>, <|"a"->12, "b"->3, "c"->21|>}



Required output for Min
{<|"a"-> 2, "b"->3, "c"->1|>}



Required output for Max
{<|"a"-> 21, "b"->11, "c"->15|>}




My attempt
for Max: MaximalBy[Values]@x
Result: {<|"a" -> 21, "b" -> 11, "c" -> 1|>}



for Min: MinimalBy[Values]@x
Result: {<|"a" -> 4, "b" -> 9, "c" -> 15|>}



Is there an elegant way to achieve this result?










share|improve this question









New contributor




Professor Williams is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 1




    I don't get it. How is the key a getting the value 2? That value does not appear for a in any of the associations. Similarly, why is the value of c not equal to 21 in the maximal result?
    – Shredderroy
    1 hour ago















up vote
3
down vote

favorite












I am trying to find the minimum values for all elements in a list of associations, below is an example



x = {<|"a"-> 4, "b"->9, "c"->15|>, <|"a"->21, "b"->11, "c"->1|>, <|"a"->12, "b"->3, "c"->21|>}



Required output for Min
{<|"a"-> 2, "b"->3, "c"->1|>}



Required output for Max
{<|"a"-> 21, "b"->11, "c"->15|>}




My attempt
for Max: MaximalBy[Values]@x
Result: {<|"a" -> 21, "b" -> 11, "c" -> 1|>}



for Min: MinimalBy[Values]@x
Result: {<|"a" -> 4, "b" -> 9, "c" -> 15|>}



Is there an elegant way to achieve this result?










share|improve this question









New contributor




Professor Williams is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
















  • 1




    I don't get it. How is the key a getting the value 2? That value does not appear for a in any of the associations. Similarly, why is the value of c not equal to 21 in the maximal result?
    – Shredderroy
    1 hour ago













up vote
3
down vote

favorite









up vote
3
down vote

favorite











I am trying to find the minimum values for all elements in a list of associations, below is an example



x = {<|"a"-> 4, "b"->9, "c"->15|>, <|"a"->21, "b"->11, "c"->1|>, <|"a"->12, "b"->3, "c"->21|>}



Required output for Min
{<|"a"-> 2, "b"->3, "c"->1|>}



Required output for Max
{<|"a"-> 21, "b"->11, "c"->15|>}




My attempt
for Max: MaximalBy[Values]@x
Result: {<|"a" -> 21, "b" -> 11, "c" -> 1|>}



for Min: MinimalBy[Values]@x
Result: {<|"a" -> 4, "b" -> 9, "c" -> 15|>}



Is there an elegant way to achieve this result?










share|improve this question









New contributor




Professor Williams is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











I am trying to find the minimum values for all elements in a list of associations, below is an example



x = {<|"a"-> 4, "b"->9, "c"->15|>, <|"a"->21, "b"->11, "c"->1|>, <|"a"->12, "b"->3, "c"->21|>}



Required output for Min
{<|"a"-> 2, "b"->3, "c"->1|>}



Required output for Max
{<|"a"-> 21, "b"->11, "c"->15|>}




My attempt
for Max: MaximalBy[Values]@x
Result: {<|"a" -> 21, "b" -> 11, "c" -> 1|>}



for Min: MinimalBy[Values]@x
Result: {<|"a" -> 4, "b" -> 9, "c" -> 15|>}



Is there an elegant way to achieve this result?







list-manipulation associations






share|improve this question









New contributor




Professor Williams is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




Professor Williams is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited 1 hour ago









C. E.

49.1k395197




49.1k395197






New contributor




Professor Williams is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 2 hours ago









Professor Williams

161




161




New contributor




Professor Williams is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Professor Williams is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Professor Williams is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








  • 1




    I don't get it. How is the key a getting the value 2? That value does not appear for a in any of the associations. Similarly, why is the value of c not equal to 21 in the maximal result?
    – Shredderroy
    1 hour ago














  • 1




    I don't get it. How is the key a getting the value 2? That value does not appear for a in any of the associations. Similarly, why is the value of c not equal to 21 in the maximal result?
    – Shredderroy
    1 hour ago








1




1




I don't get it. How is the key a getting the value 2? That value does not appear for a in any of the associations. Similarly, why is the value of c not equal to 21 in the maximal result?
– Shredderroy
1 hour ago




I don't get it. How is the key a getting the value 2? That value does not appear for a in any of the associations. Similarly, why is the value of c not equal to 21 in the maximal result?
– Shredderroy
1 hour ago










2 Answers
2






active

oldest

votes

















up vote
4
down vote













How about



a = {
<|"a" -> 4, "b" -> 9, "c" -> 15|>,
<|"a" -> 21, "b" -> 11, "c" -> 1|>,
<|"a" -> 12, "b" -> 3, "c" -> 21|>
};

Merge[a, Apply[Min]]

(*<|"a" -> 4, "b" -> 3, "c" -> 1|>*)

Merge[a, Apply[Max]]

(*<|"a" -> 21, "b" -> 11, "c" -> 21|>*)





share|improve this answer





















  • You don't need Apply.
    – Kuba
    32 mins ago


















up vote
2
down vote













Random`Private`MapThreadMin[x]
Random`Private`MapThreadMax[x]



<|"a" -> 4, "b" -> 3, "c" -> 1|>



<|"a" -> 21, "b" -> 11, "c" -> 21|>







share|improve this answer





















    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',
    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
    });


    }
    });






    Professor Williams is a new contributor. Be nice, and check out our Code of Conduct.










    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f187472%2fmin-and-max-of-a-list-of-associations%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    4
    down vote













    How about



    a = {
    <|"a" -> 4, "b" -> 9, "c" -> 15|>,
    <|"a" -> 21, "b" -> 11, "c" -> 1|>,
    <|"a" -> 12, "b" -> 3, "c" -> 21|>
    };

    Merge[a, Apply[Min]]

    (*<|"a" -> 4, "b" -> 3, "c" -> 1|>*)

    Merge[a, Apply[Max]]

    (*<|"a" -> 21, "b" -> 11, "c" -> 21|>*)





    share|improve this answer





















    • You don't need Apply.
      – Kuba
      32 mins ago















    up vote
    4
    down vote













    How about



    a = {
    <|"a" -> 4, "b" -> 9, "c" -> 15|>,
    <|"a" -> 21, "b" -> 11, "c" -> 1|>,
    <|"a" -> 12, "b" -> 3, "c" -> 21|>
    };

    Merge[a, Apply[Min]]

    (*<|"a" -> 4, "b" -> 3, "c" -> 1|>*)

    Merge[a, Apply[Max]]

    (*<|"a" -> 21, "b" -> 11, "c" -> 21|>*)





    share|improve this answer





















    • You don't need Apply.
      – Kuba
      32 mins ago













    up vote
    4
    down vote










    up vote
    4
    down vote









    How about



    a = {
    <|"a" -> 4, "b" -> 9, "c" -> 15|>,
    <|"a" -> 21, "b" -> 11, "c" -> 1|>,
    <|"a" -> 12, "b" -> 3, "c" -> 21|>
    };

    Merge[a, Apply[Min]]

    (*<|"a" -> 4, "b" -> 3, "c" -> 1|>*)

    Merge[a, Apply[Max]]

    (*<|"a" -> 21, "b" -> 11, "c" -> 21|>*)





    share|improve this answer












    How about



    a = {
    <|"a" -> 4, "b" -> 9, "c" -> 15|>,
    <|"a" -> 21, "b" -> 11, "c" -> 1|>,
    <|"a" -> 12, "b" -> 3, "c" -> 21|>
    };

    Merge[a, Apply[Min]]

    (*<|"a" -> 4, "b" -> 3, "c" -> 1|>*)

    Merge[a, Apply[Max]]

    (*<|"a" -> 21, "b" -> 11, "c" -> 21|>*)






    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered 1 hour ago









    Shredderroy

    1,3331014




    1,3331014












    • You don't need Apply.
      – Kuba
      32 mins ago


















    • You don't need Apply.
      – Kuba
      32 mins ago
















    You don't need Apply.
    – Kuba
    32 mins ago




    You don't need Apply.
    – Kuba
    32 mins ago










    up vote
    2
    down vote













    Random`Private`MapThreadMin[x]
    Random`Private`MapThreadMax[x]



    <|"a" -> 4, "b" -> 3, "c" -> 1|>



    <|"a" -> 21, "b" -> 11, "c" -> 21|>







    share|improve this answer

























      up vote
      2
      down vote













      Random`Private`MapThreadMin[x]
      Random`Private`MapThreadMax[x]



      <|"a" -> 4, "b" -> 3, "c" -> 1|>



      <|"a" -> 21, "b" -> 11, "c" -> 21|>







      share|improve this answer























        up vote
        2
        down vote










        up vote
        2
        down vote









        Random`Private`MapThreadMin[x]
        Random`Private`MapThreadMax[x]



        <|"a" -> 4, "b" -> 3, "c" -> 1|>



        <|"a" -> 21, "b" -> 11, "c" -> 21|>







        share|improve this answer












        Random`Private`MapThreadMin[x]
        Random`Private`MapThreadMax[x]



        <|"a" -> 4, "b" -> 3, "c" -> 1|>



        <|"a" -> 21, "b" -> 11, "c" -> 21|>








        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 1 hour ago









        Henrik Schumacher

        46.5k466133




        46.5k466133






















            Professor Williams is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            Professor Williams is a new contributor. Be nice, and check out our Code of Conduct.













            Professor Williams is a new contributor. Be nice, and check out our Code of Conduct.












            Professor Williams is a new contributor. Be nice, and check out our Code of Conduct.
















            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.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • 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.


            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%2f187472%2fmin-and-max-of-a-list-of-associations%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

            What visual should I use to simply compare current year value vs last year in Power BI desktop

            How to ignore python UserWarning in pytest?

            Alexandru Averescu