【发布时间】:2010-10-15 17:02:36
【问题描述】:
我有一个列表列表,并希望将其放入映射中,其中键是列表中的常见值之一(本例中为动物名称)。我知道如何使用 into {} 和 for 从列表中创建地图,但这并不是我想要的。我希望地图中的键(动物名称)引用这些值的列表。
我创建了一个列表列表
(def animals (list '("tiger" "fur" "yellow & black stripes") '("tiger" "weight" "150") '("tiger" "home" "India") '("elephant" "skin" "gray") '("elephant" "weight" "1500") '("elephant" "home" "Africa") '("frog" "skin" "green") '("frog" "diet" "insects")))
动物
(("tiger" "fur" "yellow & black stripes") ("tiger" "weight" "150") ("tiger" "home" "India") ("elephant" "skin" "gray") ("elephant" "weight" "1500") ("elephant" "home" "Africa") ("frog" "skin" "green") ("frog" "diet" "insects"))
这并不完全符合我的要求(但几乎)
(def animal-map (into {} (for [[name attribute value] animals] [name (list attribute value)])))
当我希望每个键有多个列表时,这会导致每个键只有一个列表
动物地图(列表地图)
{"tiger" ("home" "India"), "elephant" ("home" "Africa"), "frog" ("diet" "insects")}
这是我想要结束的。
动物地图(列表列表的地图)
{"tiger" ("fur" "yellow & black stripes") ("weight" "150") ("home" "India"),
"elephant" ("skin" "gray") ("weight" "1500") ("home" "Africa"),
"frog" ("skin" "green") ("diet" "insects")}
【问题讨论】: