scala 컬렉션 - 스칼라로지도에서 키 값을 제거하는 법




foreach api (5)

이는 사용중인 Scala.collection Map 유형에 따라 다릅니다. Scala는 mutable 하고 immutable 맵을 제공합니다. 다음 링크를 확인합니다.

http://www.scala-lang.org/api/2.10.2/index.html#scala.collection.immutable.Map

http://www.scala-lang.org/api/2.10.2/index.html#scala.collection.mutable.Map

두 가지 맵 유형 모두에서 - 일반적으로 키를 제거하는 작업입니다. 세부 정보는지도 유형에 따라 다릅니다. mutable 맵은 -= 를 사용하여 제자리에서 수정할 수 있습니다. 좋아하는 것

if (m.contains("privacy") && m.getOrElse("privacy", 1) == 0) {
    m -= "play"
}

한편, 변경 불가능한 맵은 제자리에서 수정 될 수 없으며 요소를 제거한 후 새 맵을 리턴해야합니다.

if (m.contains("privacy") && m.getOrElse("privacy", 1) == 0) {
    val newM = m - "play"
}

새로운 불변의 맵을 작성하고있는 것에주의 해주세요.

Map(data -> "sumi", rel -> 2, privacy -> 0, status -> 1,name->"govind singh")

개인 정보가 0 인 경우이지도에서 데이터를 제거하는 방법

Map(rel -> 2, privacy -> 0, status -> 1,name->"govind singh")  

불변의 맵을 사용하는 경우, - 메서드를 사용해, 지정된 키를 가지지 않는 새로운 맵을 작성할 수 있습니다.

val mx = Map("data" -> "sumi", "rel" -> 2, "privacy" -> 0)

val m = mx("privacy") match {
    case 0 => mx - "data"
    case _ => mx
}

=> m: scala.collection.immutable.Map[String,Any] = Map(rel -> 2, privacy -> 0)

변경 가능 맵을 사용하는 경우, -= 또는 remove 를 사용하여 키를 제거 할 수 있습니다.


val m = Map("data" -> "sumi", "rel" -> 2, "privacy" -> 0,"status" -> 1,"name"->"govind singh")
scala> if(m("privacy")==0) m.filterKeys(_ != "data")
res63: Any = Map(name -> govind singh, rel -> 2, privacy -> 0, status -> 1)

이것을 확장하여 여러 멤버를 제거하려는 경우 filterKeys 가 최선의 방법입니다.

val a = Map(
  "data"    -> "sumi",
  "rel"     -> "2",
  "privacy" -> "0",
  "status"  -> "1",
  "name"    -> "govind singh"
)

val b = a.filterKeys(_ != "data")

특히 "이 작업을 수행하는 한 가지 방법이 있습니까?"

if 'key' in myDict: del myDict['key']

... 글쎄, 당신이 물었다 ;-)

그러나 dict 에서 객체를 삭제하는 이런 방법은 원자가 아니라고 생각할 필요가 있습니다. -it는 'key'if 문 중에 myDict 에있을 수 있지만 del 이 실행되기 전에 삭제 될 수 있습니다.이 경우 delKeyError 실패하십시오. 이 점을 감안할 때, dict.pop 사용하는 것이 가장 안전 할 것입니다.

try:
    del myDict['key']
except KeyError:
    pass

물론 이것은 단 하나의 라이너가 아닙니다 .





scala dictionary collections playframework scala-collections