如何反转其值为序列的地图?在反转映射中,键是所有序列的条目(假设没有重复的键)
例如:
(map-invert-tweaked {:monday [:banana :apple]
:sunday [:pineapple :mango]}); {:banana :monday
:apple :monday
:pineapple :sunday
:mango :sunday}
Run Code Online (Sandbox Code Playgroud)
我希望这个问题是明确的.
你可以使用列表理解.像这样:
(defn map-invert-tweaked [m]
(into {} (for [[k vs] m
v vs]
[v k])))
Run Code Online (Sandbox Code Playgroud)
这for部分是这样的:
var result = [];
for (var k in m) {
var vs = m[k];
for (var i = 0; i < vs.length; i++) {
var v = vs[i]
result.push([v, k]);
}
}
Run Code Online (Sandbox Code Playgroud)
然后它只是将所有这些对放入地图中
在repl中:
user> (map-invert-tweaked {:monday [:banana :apple]
:sunday [:pineapple :mango]})
{:banana :monday, :apple :monday, :pineapple :sunday, :mango :sunday}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |