2012-11-27 3 views
1

을 찾을 키 값 튜플 예를 들어, 목록 = [{KEY1은 VALUE1}, {키 2는 값 2}]가 더얼랑 : 목록 : keyfind DICT 대/3 : from_list/1 + DICT : 가져 오기/2 또는 DICT : 나는 목록이있는 경우/2

목록 사용하는 것이다 keyfind을 (키, N, TupleList) 예컨대 목록 : from_list (목록)

는 딕셔너리으로 바꿀 다음 딕셔너리로 ​​조회 할 수 : keyfind (키 1, 1, 목록)

이 딕셔너리는 주어진 값 또는

찾기를 가져 오기를/2 dict : 찾기/2? 사전인가를 사용

그러나 좀 더 효율적이었다 궁금해서, 그것이 내가 인라인을 사용할 수 있습니다 직접 때문에 값을 반환 나를 더 읽을?

감사합니다. 조회()는 다음 stdlib의 일부를하고 실용적으로 무슨 일을 표현하는 가장 관용적 인 방법이 될 것이다 :

+1

유용 할 수 있습니다. http://stackoverflow.com/questions/11055391/time-complexity-of-erlang-dict – stemm

+1

목록을 스캔하는 것이 가장 빠를 가능성이 큽니다. 여러 번 해보지 않는 한, 'dict'으로 변환하는 것이 더 좋습니다. 왜리스트 대신에'dict'을 항상 사용하지 않을까요? 당신이 목록을 원하는 경우 대안은'** 순서 ** 목록을 유지하고 dict''와 같은 인터페이스를 제공 orddict'을 사용하는 것입니다. – rvirding

답변

1

는 또한 proplists를 사용하는 옵션이 있습니다. 당신은 원래의 형태로 구조를 조작 할 것이고 프로그래머 동료들은 당신에게 그것을 감사 할 것이다. 아래의 링크에서 볼 수있는 효율성의 측면에서, 목록은 일치하는 항목을 찾을 때까지 통과되고, 키의 더 모습은 무시됩니다.

proplists.erl

목록의 사용 : keyfind는() 아마 그래서 제 생각은 proplist와 같은 구조를 사용하여 일관성을 유지에 찬성 점을 푼다 다른 옵션 덜 관용적이다. 이 목록 : keyfind()는 해당이 C 때문에 효율성하지만 매우 가능성이 반드시 구현되어 우리를 알려주는 BIF이다.

마지막으로 제 의견으로는 목록을 사용한다고해서 가독성을 활용할 수있는 것은 아니며 데이터 구조가 처음 생각 된 방식에서 일관성을 잃어 버릴 수 있습니다. 당신은 딕셔너리로 ​​설정하는 목록을 통과하고 당신은 DICT 인터페이스 구조를 조회, 그래서 제 생각에 당신은 얻는 대신 잃어버린된다.

내 두 센트!

+0

흥미 롭다, 나는 프로 프롭 스트를 만나지 않았다. 그것은 dict 없이는 그것을하는 더 명확한 방법 인 것처럼 보입니다. 목록에게 DICT를 만들 수있는 추가 시간을 통과하는 것은 불필요하다고 귀하의 주장도 설득력이있다. –

+0

에 관한 proplists keyfind 대, 다음 블로그 항목에 내 의견을 참조하십시오 http://www.ostinelli.net/erlang-listskeyfind-or-proplistsget_value/ – RichardC