当前位置: 首页 > 知识库问答 >
问题:

如何创建要列出的字符串的映射

黄俊雄
2023-03-14

我有一个给定格式的JSON数据:

dataset = [
    { 'name': 'Sayantan', 'section': 'A', 'detail': 'complete' },
    { 'name': 'Charu', 'section': 'B', 'detail': 'complete' },
    { 'name': 'Sanhati', 'section': 'C', 'detail': 'inprogress' },
]

我想把它转换成地图

{'complete': [{'detail': 'complete', 'name': 'Sayantan', 'section': 'A'},
              {'detail': 'complete', 'name': 'Charu', 'section': 'B'}],
 'inprogress': [{'detail': 'inprogress', 'name': 'Sanhati', 'section': 'C'}]}

我在Kotlin方面没有太多经验,我主要用Python处理过此类案例,我成功地编写了以下内容:

val mapOfInterest = mutableMapOf<String, List<DataResource>>()
for (data in datasets) {
  val mapKey = data.detail
  if (!mapOfInterest.containsKey(mapKey)) {
    if (mapKey != null) {
      mapOfInterest[mapKey] = listOf(data)
    } else {
      mapOfInterest[mapKey] // I am stuck here
    }
  }
}

我无法使用add()将数据添加到地图键值,任何想法或线索都会有所帮助。

共有2个答案

卢黎昕
2023-03-14

在Kotlin中,集合在默认情况下是不可变的:https://kotlinlang.org/docs/collections-overview.html.所以列表没有add()方法。

您可以使用mutableListOf(),但正如Joffrey已经指出的那样,在Kotlin中使用标准函数groupBy()https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/group-by.html

叶恩
2023-03-14

有一个stdlib函数,用于您需要的名为GroupBy的内容:

val mapOfInterest = dataset.groupBy { it.detail }
 类似资料:
  • 我有一个给定格式的JSON数据: 我想把它转换成地图 我在Kotlin方面没有太多经验,我主要用python处理过此类案例,我成功地编写了以下内容: 我无法使用向地图键值添加数据,任何想法或线索都会有帮助,谢谢。

  • 问题内容: 我想创建一个字符串映射到实例。这是正确的方法吗? 问题答案: 每当我想使用A时,我都发现切片是正确的选择,例如

  • 问题内容: 我需要创建一个将给定映射到的数组的静态对象。 换句话说,我想定义如下内容: 有没有简单的方法可以在Java中做到这一点? 而且,如果可能的话,我想同时为和值使用常量。 编辑: 为了澄清我的意思是值的常量,并给出我认为是正确的代码,这是我在解决方案中的第一个选项: 请注意,这些名称不是我实际使用的名称。这只是一个人为的例子。 问题答案: 你 并不 需要单独的声明和初始化。如果您知道怎么做

  • 问题内容: 我有一个字符串列表,例如: 我想为列表中的每个元素创建一个列表,该列表的名称应与字符串完全相同: 如何在Python中做到这一点? 问题答案: 你可以通过创建一个dict: 然后按(例如:)访问每个你不想走单独的变量之路!

  • 问题内容: 我正在尝试分割字符串: 变成这样的列表: 我将如何去做呢? 问题答案: : 返回字符串中的单词列表,用作分隔符字符串。如果给出,最多 完成拆分(因此,列表最多 包含元素)。如果未指定,则分割数没有限制(进行所有可能的分割)。 如果指定,则连续的定界符不会分组在一起,而是视为定界空字符串(例如, return )。所述参数可以由多个字符(例如, 返回)。使用指定的分隔符分割空字符串将返回

  • 问题内容: 你最好采用哪种方法来连接序列中的字符串,以便在每两个连续对之间添加一个逗号。也就是说,例如,你如何映射到(案例和该分别映射到和。) 我通常会使用类似的东西,但也会感到有些不满意。 问题答案: 如果列表包含数字,则此功能将无效。 并且如果列表包含非字符串类型(such as integers, floats, bools, None),则执行以下操作: