nic*_*las 7 haskell tuples list
我有一个像这样的元组列表:
[("username", 123), ("df", 54), ("as",2 34)]
Run Code Online (Sandbox Code Playgroud)
我需要根据用户名搜索值.我使用查找但我需要更改整数的值并写回文件.我的逻辑是删除元组并插入另一个新的元组值而不是更改它.
知道怎么做吗?
jd.*_*d.k 15
像这样使用Data.Map:
import qualified Data.Map as Map
m1 :: Map String Int
m1 = Map.fromList [("username", 123), ("df", 54), ("as",234)]
Run Code Online (Sandbox Code Playgroud)
让我们将54替换为78(在"df"上):
m2 = Map.insert "df" 78 m1
Run Code Online (Sandbox Code Playgroud)
您可以使用insertWith'将旧值和新值与函数组合.
这里我们在"用户名"上插入4,并将4添加到"用户名"指向的任何值.
m3 = Map.insertWith (+) "username" 4 m1
Run Code Online (Sandbox Code Playgroud)
如果您确定某个键位于地图中,则可以使用(!)运算符访问其值:
import Data.Map ((!))
m3 ! "username"
Run Code Online (Sandbox Code Playgroud)
这给了127
.但要注意,如果密钥不在地图中,它可能会引发异常!
为了安全查找:
Map.lookup :: Map k a -> k -> Maybe a
Map.lookup "usrname" m3
Run Code Online (Sandbox Code Playgroud)
键上有拼写错误,所以返回Nothing
.