2010-04-02 6 views
5

는이 전 목록목록의 고유 요소를 가장 효율적으로 검사하는 방법은 무엇입니까?

li = [{'q':'apple','code':'2B'}, 
     {'q':'orange','code':'2A'}, 
     {'q':'plum','code':'2A'}] 

이 목록에 독특한 "코드"의 수를 반환하는 가장 효율적인 방법은 무엇입니까 있다고 가정 해 봅시다? 2B2A 만 고유하기 때문에이 경우 고유 코드는 2입니다.

모든 것을 목록에 넣고 비교할 수는 있지만 정말 효율적입니까? 나는 걱정하지 조언 언제나

count = len(set(d["code"] for d in li)) 

:

+2

다음 두 가지가 모두 중복됩니다. http://stackoverflow.com/search?q=%5Bpython%5D+duplicate+list. 특히 이것 : http://stackoverflow.com/questions/1143379/removing-duplicates-from-list-of-lists-in-python –

답변

8

아마 가장 효과적인 간단한 방법은, 유니크을 걸러 코드 세트를 만드는 것이 집합의 원소의 개수를 얻을 수 있습니다 실적을 측정하지 못하고 문제가 발생한 경우를 제외하고는 이런 종류의 효율성에 대해 필자는 보통 이러한 종류의 코드를 작성할 때 코드 명료성에 대해서만 생각하고 프로필을 작성한 경우에만 다시 설정하여 성능을 향상시키기 위해 이 필요합니다.

+0

네, 내가 무엇을 찾고 있었는지입니다. 감사. – TIMEX

+1

FWIW 세트가 파이썬에서 처음 소개되었을 때 이것은 나에게 새로운 개념이었습니다. 세트를 뒤져서 수학을 읽는 것이 매우 유용하다는 것을 알게되었습니다. http://en.wikipedia.org/wiki/Set_(mathematics) – jathanism

+2

고유 한 * 그룹 *을 사용하려면 항상 O입니다. (n), 왜냐하면 당신은 다른 내부 정보가 없으면 모든 요소를 ​​보았 기 때문입니다. –

관련 문제