dictionary - 在给定 Kotlin 中的键列表的情况下切片 map

标签 dictionary kotlin slice

给定一张 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/

相关文章:

java - 多个不同的 map 可以共享相同的键集吗?

r - 是否存在等效于子集运算符 `[ ]` 的 R 函数,以便按行索引进行切片?

css - 在 Wordpress 中使用切片横幅

python - 将列表转换为 DataFrame 并在 DataFrame 列内拆分嵌套字典 - Python 3.6

c# - 如何重新创建 "Index was outside the bounds of the array"添加项目到字典?

algorithm - 为什么我们说 map-reduce 比传统方法更好地解决了 "Paper reference"问题?

kotlin - 如何在 Quarkus 中注册 Jackson 模块?

android - 在 sharedPref.getString 中设置默认值有什么意义?

Java/Kotlin 泛型

python - 计算任意维度数组的外积