2010-08-02 3 views

답변

12

in 연산자를 사용

if p.sku in dic1: 
    ... 

(덧붙여, 당신은 또한 has_key 방법을 사용할 수 있습니다,하지만 in의 사용이 바람직하다.)

+0

목록, 튜플 및 문자열에 대해서도이 작업을 수행 할 수 있습니다. –

+1

'has_key'는 더 이상 사용되지 않습니다 –

0

을 그들은 수행

if dic1.has_key(p.sku): 
+1

'has_key'는 더 이상 사용되지 않습니다 –

+0

@gnibbler : 질문은 어떤 버전의 파이썬이 사용되는지를 알려주지 않았기 때문에 대답은 일반적인 널리 사용되는 버전 2.6을 기반으로했습니다. – banx

+0

@banx, deprecated는 이전 버전과의 호환성을 위해 여전히 사용되지만 새로운 코드에는 일반적으로 사용하지 말아야 함을 의미합니다. '안에'는 수년간 선호 된 길이었습니다. –

0

if dic1.get(p.sku) is None:KeyError을 제외하고 시도한 것과 정확히 일치합니다.이래로키가없는 경우 또는None이 해당 값으로 명시 적으로 저장되어 있으므로 키 집합을 실제로 변경하지 않고 키를 "논리적으로 삭제"하는 방법으로 유용합니다 (키 조합을 변경할 수 없음). lock을 사용하지 않고 쓰레드로 안전하게 할 수 없는지 또는 이미 존재하는 키에 None의 값을 할당하는 경우 에 허용 된입니다. 및 threadsafe).

@Michael이 제안한대로, 이런 종류의 요구 사항이 없다면 if p.sku not in dic1:은 모든 비행기에서 (더 빠르고, 더 간결하며, 더 읽기 쉽도록 ...-) 매우 좋습니다.

관련 문제