Re: results from sort-by are not sorted
Thanks. What a newbie question. 在 2019年5月6日星期一 UTC+8上午11:34:36,se...@corfield.org写道: > > (sort-by #{:age} …) will use the set #{:age} as the keyfn, and both > (#{:age} {:age 3, :name “luo”}) and (#{:age} {:age 1, :name “sheng”}) both > return :age – because both maps contain the key in the set. As far as > sort-by is concerned, both hash maps compare equal. > > > > What you want is (sort-by :age …) so you the keyfn pulls the value > corresponding to :age out of the hash maps. That will produce 3 from {:age > 3, :name “luo”} and 1 from {:age 1, :name “sheng”} so they will sort > appropriately. > > > > Sean Corfield -- (970) FOR-SEAN -- (904) 302-SEAN > An Architect's View -- http://corfield.org/ > > "If you're not annoying somebody, you're not really alive." > -- Margaret Atwood > > > > *From: *sheng@gmail.com > *Sent: *Sunday, May 5, 2019 7:48 PM > *To: *Clojure > *Subject: *results from sort-by are not sorted > > > > Hey there, > > > > in my lein repl, > > > > (sort-by #{:age} [{:age 3,:name "luo"},{:age 1,:name "sheng"}]) > > > > returns > > > > ({:age 3, :name "luo"} {:age 1, :name "sheng"}) > > > > rather than > > > > ({:age 1, :name "sheng"}, {:age 3, :name "luo"}). > > > > Why? > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clo...@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clo...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clo...@googlegroups.com . > For more options, visit https://groups.google.com/d/optout. > > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
RE: results from sort-by are not sorted
(sort-by #{:age} …) will use the set #{:age} as the keyfn, and both (#{:age} {:age 3, :name “luo”}) and (#{:age} {:age 1, :name “sheng”}) both return :age – because both maps contain the key in the set. As far as sort-by is concerned, both hash maps compare equal. What you want is (sort-by :age …) so you the keyfn pulls the value corresponding to :age out of the hash maps. That will produce 3 from {:age 3, :name “luo”} and 1 from {:age 1, :name “sheng”} so they will sort appropriately. Sean Corfield -- (970) FOR-SEAN -- (904) 302-SEANAn Architect's View -- http://corfield.org/"If you're not annoying somebody, you're not really alive."-- Margaret Atwood From: sheng.peisi@gmail.comSent: Sunday, May 5, 2019 7:48 PMTo: ClojureSubject: results from sort-by are not sorted Hey there, in my lein repl, (sort-by #{:age} [{:age 3,:name "luo"},{:age 1,:name "sheng"}]) returns ({:age 3, :name "luo"} {:age 1, :name "sheng"}) rather than ({:age 1, :name "sheng"}, {:age 3, :name "luo"}). Why?-- You received this message because you are subscribed to the GoogleGroups "Clojure" group.To post to this group, send email to clojure@googlegroups.comNote that posts from new members are moderated - please be patient with your first post.To unsubscribe from this group, send email toclojure+unsubscr...@googlegroups.comFor more options, visit this group athttp://groups.google.com/group/clojure?hl=en--- You received this message because you are subscribed to the Google Groups "Clojure" group.To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com.For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: results from sort-by are not sorted
clojure.core/sort-by ([keyfn coll] [keyfn comp coll]) Returns a sorted sequence of the items in coll, where the sort order is determined by comparing (keyfn item). If no comparator is supplied, uses compare. comparator must implement java.util.Comparator. Guaranteed to be stable: equal elements will not be reordered. If coll is a Java array, it will be modified. To avoid this, sort a copy of the array. nil 于2019年5月6日周一 上午10:48写道: > Hey there, > > in my lein repl, > > (sort-by #{:age} [{:age 3,:name "luo"},{:age 1,:name "sheng"}]) > > returns > > ({:age 3, :name "luo"} {:age 1, :name "sheng"}) > > rather than > > ({:age 1, :name "sheng"}, {:age 3, :name "luo"}). > > Why? > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- /** * Bill Xie * twitter: @joyrap */ -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
results from sort-by are not sorted
Hey there, in my lein repl, (sort-by #{:age} [{:age 3,:name "luo"},{:age 1,:name "sheng"}]) returns ({:age 3, :name "luo"} {:age 1, :name "sheng"}) rather than ({:age 1, :name "sheng"}, {:age 3, :name "luo"}). Why? -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.