首页 文章

Erlang:列表:keyfind / 3 vs dict:from_list / 1 dict:fetch / 2或dict:find / 2

提问于
浏览
1

如果我有一个Key Value元组列表,例如List = [{key1,value1},{key2,value2}]是否更好用

lists:keyfind(Key,N,TupleList),例如:列表:keyfind(key1,1,List)

找到给定的值或

字典:from_list(名单)

把它变成一个字典,然后用dict查找:fetch / 2或dict:find / 2?

使用dict对我来说更具可读性,因为它直接返回值,所以我可以使用它内联,但是我想知道哪个更有效?

谢谢 .

1 回答

  • 1

    您还可以选择使用proplists:lookup(),stdlib的一部分,实际上是表达您正在做的最惯用的方式 . 你将以原始形式操纵结构,程序员同行会感谢你 . 从效率方面可以看出,从下面的链接可以看到,列表将被遍历,直到找到匹配项为止,键的任何其他外观都将被忽略 .

    proplists.erl

    列表的使用:keyfind()是另一种较不惯用的选项,因此在我看来,有利于保持与使用结构作为一个支持列表的一致性 . 列表:keyfind()是一个BIF,只告诉我们在C中实现不一定是因为效率,但很可能 .

    最后,在我看来使用列表来表示不会影响你的可读性,你将在数据结构的最初设想方面失去一致性,与其他两个相比可能效率较低,因为你遍历列表把它变成一个字典然后你用dict界面查找结构,所以在我看来你是在失去而不是获得 .

    我的两分钱!

相关问题