【发布时间】:2020-09-20 03:29:08
【问题描述】:
我有一个嵌套映射,其中的键是数字,如下所示:
{:18 [Lan Yuhong 165 Happy Lane 345-4533], :33 [Man Yuhong 165 Happy Lane 345-4533], :3 [Tan Yuhong 165 Happy Lane 345-4533], :6 [Jan Yuhong 165 Happy Lane 345-4533], :5 [Han Yuhong 165 Happy Lane 345-4533], :7 [Fan Yuhong 165 Happy Lane 345-4533], :1 [Sue Jones 43 Rose Court Street 345-7867], :9 [John Smith 123 Here Street 456-4567]}
我想根据第一个条目(即键)进行排序,如下所示:
{:1 [Sue Jones 43 Rose Court Street 345-7867], :3 [Tan Yuhong 165 Happy Lane 345-4533], :5 [Han Yuhong 165 Happy Lane 345-4533], :6 [Jan Yuhong 165 Happy Lane 345-4533], :7 [Fan Yuhong 165 Happy Lane 345-4533], :9 [John Smith 123 Here Street 456-4567], :18 [Lan Yuhong 165 Happy Lane 345-4533], :33 [Man Yuhong 165 Happy Lane 345-4533]}
但是,每个列表中的第一个条目被视为字符串而不是整数,sort/sort-by
返回一个按字典顺序排序的列表,如下所示。请注意,mps 存储在我的程序中的new-map 变量中。
(do
(into (sorted-map) new-map)
)
输出是:
([1 Sue Jones 43 Rose Court Street 345-7867] [18 Lan Yuhong 165 Happy Lane 345-4533] [3 Tan Yuhong 165 Happy Lane 345-4533] [33 Man Yuhong 165 Happy Lane 345-4533] [5 Han Yuhong 165 Happy Lane 345-4533] [6 Jan Yuhong 165 Happy Lane 345-4533] [7 Fan Yuhong 165 Happy Lane 345-4533] [9 John Smith 123 Here Street 456-4567])
如何在不使用任何循环的情况下做到这一点?我试图避免在这里使用循环。但是,递归函数是可以的。
【问题讨论】:
-
我已回滚您的最新编辑。内容与标题不符,代码示例显然无法做到你所说的那样(你忘了完成编辑它们),这使得 Alan Thompson 的现有答案看起来有点奇怪,因为它正在回答你的问题似乎没有问。请保持问题编辑与最初提出的问题大致一致。
标签: recursion clojure functional-programming nested-lists