再次,我堅持Scala和鍵/值對的想法。再次,我想以某種方式使用Option。這一次,我被困在如何基於密鑰刪除一對,並且只有該密鑰的第一個實例(並非全部)。我試圖使用filter
和filterNot
,但刪除所有共享相同的密鑰對。此外,再次試圖用List
來實現這一點,以使其保持半簡單Scala:從列表中刪除鍵/值對
0
A
回答
0
很難說出你在問什麼。如果你寫出你正在編寫的函數的簽名,這將有所幫助。
可能是這樣的嗎?
def remove[A, B](seq: Seq[(A, B)], key: A): Seq[(A, B)] =
seq.indexWhere(_._1 == key) match {
case -1 => seq
case n => seq.patch(n, Nil, 1)
}
remove(Seq((1,2), (2,3), (3,4), (2,5)), 2)
// List((1,2), (3,4), (2,5))
remove(Seq((1,2), (2,3), (3,4), (2,5)), 6)
// List((1,2), (2,3), (3,4), (2,5))
0
Seq has a method called find
,做你問什麼:
def find(p: (A) ⇒ Boolean): Option[A] Finds the first element of the sequence satisfying a predicate, if any. Note: may not terminate for infinite-sized collections. p the predicate used to test elements. returns an option value containing the first element in the sequence that satisfies p, or None if none exists.
用法:
val list = List(("A",1),("B",2),("C",3))
def remove(key:String): Option[Int] = list.find(_._1 == key)
remove("B")
// Some((B,2))
remove("D")
// None
0
val list = List(1 -> 'a, 2 -> 'b, 2 -> 'c)
val removal = list find (_._1 == 2)
// Option[(Int, Symbol)] = Some((2,'b))
val newList = list diff removal.toList
// List[(Int, Symbol)] = List((1,'a), (2,'c))
diff
將刪除只在參數中找到的每個元素的第一個實例列表中,並不全是filter
。
相關問題
- 1. 從給出要刪除的鍵列表的字典中刪除鍵,值對
- 2. 從scala中刪除json對象的鍵值
- 3. Scala - 從列表中刪除重複項
- 4. 從JSON對象中刪除鍵值對
- 5. 從列表中刪除值從列表中刪除
- 6. 從列表中刪除值
- 7. 從列表中刪除值
- 8. 從列表中刪除值
- 9. 刪除重複鍵值對中的值在列表中
- 10. 從Hive地圖中刪除鍵值對?
- 11. 從javax.json.JsonObject中刪除鍵值對
- 12. 從Python字典中刪除鍵/值對
- 13. 如何使用scala從列表中刪除重複值?
- 14. Scala從列表中刪除單個對象
- 15. 如何使用scala從列表中刪除空列表?
- 16. 刪除列表中的Foreach循環中的鍵值對
- 17. 從對象列表中刪除對象
- 18. 刪除對象從列表
- 19. 從不在python列表中的對象中刪除鍵?
- 20. Rails中刪除多個鍵和值的對從散列
- 21. 從鍵刪除陣列值來結束
- 22. Python - 從列表中刪除字典,如果鍵值等於
- 23. C# - 從KeyValuePair列表中刪除鍵重複和增加價值
- 24. scala:刪除列值低於所有列的中值的列
- 25. 刪除Cookie鍵值對
- 26. SCHEME從列表中刪除原子值
- 27. 從列表中刪除一定的值
- 28. 從Python列表中刪除nan值
- 29. 從值列表中刪除空
- 30. 從下拉列表中刪除值
依賴於執行順序&「第一」聽起來_procedural_而不是_functional_,有點。 –
由於這看起來像家庭作業,並且您希望在使用'List'的同時儘可能地發揮功能,所以我將指向'List'的'span'函數。想想你如何分解它返回的元組(頭部,尾部)以及你可以用它們做什麼。 – yan
@ThomasW沒有。 'List'是一個有序的結構,所以就結構而言,「first」是很好的定義,而不考慮添加/訪問項目的執行順序。 –