Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 元组搜索的Haskell列表_List_Haskell_Tuples - Fatal编程技术网

List 元组搜索的Haskell列表

List 元组搜索的Haskell列表,list,haskell,tuples,List,Haskell,Tuples,我有一个元组列表,如下所示: [("username", 123), ("df", 54), ("as",2 34)] 我需要根据用户名搜索值。我已经使用了查找,但我需要更改整数的值并写回文件。我的逻辑是删除元组并插入另一个新的元组值,而不是更改它 你知道怎么做吗?如果你使用Data.Map类型,你可以使用如下函数 updatedMap = Data.Map.updateWithKey (\_ _ -> Just 234) "username" myMap 按照您给出列表的方式,您必须

我有一个元组列表,如下所示:

[("username", 123), ("df", 54), ("as",2 34)]
我需要根据用户名搜索值。我已经使用了查找,但我需要更改整数的值并写回文件。我的逻辑是删除元组并插入另一个新的元组值,而不是更改它


你知道怎么做吗?

如果你使用Data.Map类型,你可以使用如下函数

updatedMap = Data.Map.updateWithKey (\_ _ -> Just 234) "username" myMap
按照您给出列表的方式,您必须通过以下方式构建地图

myMap = Data.Map.fromList (map (\ (a,b) -> (b,a)) datalist)

最后,您可以使用Data.Map.toList将内容返回到值列表

使用数据。映射如下:

import qualified Data.Map as Map

m1 :: Map String Int
m1 = Map.fromList [("username", 123), ("df", 54), ("as",234)]
让我们将54替换为78(在“df”中):

您可以使用insertWith'将新旧值与函数组合

在这里,我们在“用户名”上插入4,并在“用户名”指向的任何值上添加4

m3 = Map.insertWith (+) "username" 4 m1
如果确定某个键位于地图中,则可以使用(!)运算符访问其值:

import Data.Map ((!))
m3 ! "username"
它给出了
127
。但是要小心,如果钥匙不在地图上,它可能会引发异常

要安全查找,请执行以下操作:

Map.lookup :: Map k a -> k -> Maybe a
Map.lookup "usrname" m3
键上有一个输入错误,因此返回
Nothing

repList old new xs = map (\v@(x,y) -> if x == old then (new,y) else v) xs
repList old new xs = map (\v@(x,y) -> if x == old then (new,y) else v) xs