假設我有一個鍵和一個Map的列表。迭代列表以檢索Map中與這些鍵相對應的值並創建另一個列表的最簡單方法是什麼?從地圖中檢索多個值
retrieveMultipleValues myMap myKeys =
map (\x -> lookup x myMap) myKeys -- ???
在這種情況下:
myMap :: Map String String
myKeys :: [String]
我的直覺告訴必須有做這個單子的方式。
假設我有一個鍵和一個Map的列表。迭代列表以檢索Map中與這些鍵相對應的值並創建另一個列表的最簡單方法是什麼?從地圖中檢索多個值
retrieveMultipleValues myMap myKeys =
map (\x -> lookup x myMap) myKeys -- ???
在這種情況下:
myMap :: Map String String
myKeys :: [String]
我的直覺告訴必須有做這個單子的方式。
您可以使用lookup
和mapMaybe
:
import Data.Maybe
retrieveMultipleValues m = mapMaybe (\k -> Map.lookup k m)
但我該如何返回一個純粹的列表,而不是Maybe的列表? –
@AlexanderSupertramp - 它返回地圖中存在鍵的值列表。 – Lee
還有一件事。我如何確保'retrieveMultipleValues'的返回值與'myKeys'中的鍵的順序相同?如果結果'retrieveMultipleValues'的長度== =='keys'的長度,那麼它們的順序是相同的,對嗎? –
什麼是與你的'retrieveMultipleValues'的定義問題?這應該做的伎倆,並給你一個'可能字符串'的列表。 – Bill