给定一张 map 和一个键列表
val abc = mapOf(1 to "a", 2 to "b", 3 to "c")
val keys = listOf(1, 2)
如何获取仅包含 keys
指定的键值对的映射?有点像
val ab = abc.slice(keys)
// equivalent to mapOf(1 to "a", 2 to "b)
我正在寻找比
更优雅的东西val ab = listOf(1, 2).map { it to abc[it] }.toMap()
例如,在 Elixir 中:
abc = %{1 => "a", 2 => "b", 3 => "c"}
ab = Map.take(abc, [1, 2])
# equivalent to ab = %{1 => "a", 2 => "b"}
最佳答案
您可以使用 filterKeys
:
val ab = abc.filterKeys { it in keys }
因为它是 Kotlin,您甚至可以定义自己的 extension function实现您的想象:
fun <T> Map<T, *>.slice(keys: Iterable<T>) = filterKeys { it in keys }
val ab = abc.slice(keys)
关于dictionary - 在给定 Kotlin 中的键列表的情况下切片 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65939282/