1

List = [{key1, value1}, {key2, value2}] などのキーと値のタプルのリストがある場合は、使用する方が適切です

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

与えられた値を見つけるか、

dict:from_list(リスト)

それを辞書に変換してから、 dict:fetch/2 または dict:find/2 で検索するには?

dict を使用すると、値が直接返されるため読みやすくなり、インラインで使用できるようになりますが、どちらがより効率的か疑問に思っていました。

ありがとう。

4

1 に答える 1

1

また、stdlib の一部である proplists:lookup() を使用するオプションもあり、実用的には、実行していることを表現する最も慣用的な方法です。元の形式で構造を操作することになり、プログラマーの仲間はそれを感謝するでしょう。以下のリンクからわかるように、効率の観点から、一致が見つかるまでリストが走査され、それ以降のキーの出現は無視されます。

proplists.erl

lists:keyfind() の使用は、おそらく慣用的ではない別のオプションであるため、私の意見では、構造体をプロップリストとして使用することとの一貫性を維持することを支持してポイントを失います。lists:keyfind() は BIF であり、必ずしも効率のために C で実装されているわけではありませんが、非常に可能性が高いことを示しているだけです。

最後に、私の意見では、ディクテーションにリストを使用しても可読性が向上せず、データ構造が最初にどのように考えられたかという点で一貫性が失われます。リストをトラバースするため、他の2つと比較しておそらく効率が低下しますそれをdictに変えてから、dictインターフェースで構造を検索するので、私の意見では、得るのではなく失うことになります。

私の2セント!

于 2012-11-27T15:45:19.437 に答える