我有一个迭代返回 的算法(key, value)。我想要做的是将这些结果存储在一个结构中,这样如果key不存在,它将添加它和相应的value. 现在,如果键存在,它将附加value到现有的值数组中。
在 python 中,我可以使用以下格式的 python 字典来执行此操作:
dict = {'key1': [val1, val2, val3],
'key2': [val4, val5],
'key3': [val6], ... }
Run Code Online (Sandbox Code Playgroud)
并简单地执行以下操作:
if key in dict.keys():
dict[key].append(value)
else:
dict[key] = [value]
Run Code Online (Sandbox Code Playgroud)
我如何在 Scala 中做到这一点?
也许是这样的?
scala> def insert[K,V](k: K, v: V, m: Map[K, List[V]]): Map[K, List[V]] = {
| if (m contains k) m + (k -> (m(k) :+ v))
| else m + (k -> List(v)) }
insert: [K, V](k: K, v: V, m: Map[K,List[V]])Map[K,List[V]]
scala> insert('b', 23, Map('b' -> List(2)))
res30: Map[Char,List[Int]] = Map(b -> List(2, 23))
scala> insert('b', 23, Map('c' -> List(2)))
res31: Map[Char,List[Int]] = Map(c -> List(2), b -> List(23))
Run Code Online (Sandbox Code Playgroud)
或者,结合谢尔盖的非常好的建议:
def insert[K,V](k: K, v: V, m: Map[K, List[V]]): Map[K, List[V]] =
m + (k -> (m.getOrElse(k, List()) :+ v))
Run Code Online (Sandbox Code Playgroud)