이번에는 Python사전 목록 사용 방법과 Python 사전 목록 사용 시 주의사항에 대해 알려드리겠습니다. 실제 사례를 살펴보겠습니다.
1. 키가 존재하는지 확인하려면 in 키워드를 사용하세요.
Zen of Python에는 다음과 같은 개발 철학이 있습니다.
이를 수행하는 방법은 하나만 있어야 합니다.
가능한 한 많이 찾아보세요. 유일한, 바람직하게는 유일하고 확실한 해결책입니다. Python2에서는 has_key 메서드를 사용하여 사전에 키가 있는지 확인할 수 있습니다. 또 다른 방법은 in 키워드를 사용하는 것입니다. 그러나 in이 더 빨리 처리되기 때문에 후자를 사용하는 것이 좋습니다. 또 다른 이유는 Python3에서 has_key 메서드가 제거되었기 때문입니다. py2 및 py3 버전의 코드와 모두 호환되려면 in을 사용하는 것이 가장 좋습니다. 선택.
bad d = {'name': 'python'} if d.has_key('name'): pass good if 'name' in d: pass
2 get을 사용하여 사전에서 값을 가져옵니다
사전에서 값을 가져오는 것과 관련하여 간단한 방법은 d[x]를 사용하여 요소에 액세스하는 것이지만 키가 그럴 때 이런 상황이 발생합니다. 존재하지 않음 KeyError 오류가 보고됩니다. 물론 in 작업을 사용하여 키를 검색하기 전에 사전에 있는지 확인할 수 있습니다. 그러나 이 방법은 Python의 Zen에서 말한 내용을 준수하지 않습니다. 단순한 것이 복잡한 것보다 낫습니다.
플랫이 중첩된 것보다 낫습니다.
좋은 코드는 간단하고 이해하기 쉬워야 하며, 플랫한 코드 구조는 가독성이 더 좋습니다. if...elsebad d = {'name': 'python'} if 'name' in d: print(d['hello']) else: print('default') good print(d.get("name", "default"))
3. 사전에 존재하지 않는 키에 대해 기본값을 설정하려면 setdefault를 사용하세요
data = [ ("animal", "bear"), ("animal", "duck"), ("plant", "cactus"), ("vehicle", "speed boat"), ("vehicle", "school bus") ]분류 통계를 수행할 때 동일한 유형의 데이터를 사전에 추가 위 코드와 같은 특정 유형에서는 동일한 유형의 것을 목록 형태로 다시 조립하여 새 사전을 얻습니다
groups = {} >>> {'plant': ['cactus'], 'animal': ['bear', 'duck'], 'vehicle': ['speed boat', 'school bus']}일반적인 방법은 먼저 키가 이미 있는지 확인하는 것입니다 존재하지 않는 경우 먼저 목록을 사용하세요
개체를 초기화한 후
후속 작업을 수행하세요. 더 좋은 방법은 사전에서 setdefault 메소드를 사용하는 것입니다.bad for (key, value) in data: if key in groups: groups[key].append(value) else: groups[key] = [value] good groups = {} for (key, value) in data: groups.setdefault(key, []).append(value)setdefault의 기능은 다음과 같습니다. 키가 사전에 있으면 해당 값이 직접 반환됩니다. 이는 get 메서드와 동일합니다.키가 사전에 없으면 두 번째 매개 변수 setdefault는 키 값으로 사용된 다음 값을 반환합니다.
4. defaultdict를 사용하여 사전 개체를 초기화하세요
x가 존재하지 않을 때 d[x]가 오류를 보고하지 않도록 하려면 요소를 가져올 때 get 메서드를 사용하는 것 외에 다른 방법은 다음과 같습니다. 컬렉션 모듈에서 defaultdict를 사용하세요. 실제로 defaultdict는 dict의 하위 클래스입니다.
from collections import defaultdict groups = defaultdict(list) for (key, value) in data: groups[key].append(value)키가 사전에 없으면 목록 함수가 호출되고 빈 목록을 반환하여 d[key]에 할당합니다. 이런 방식으로 d[k] 호출 및 보고에 대해 걱정할 필요가 없습니다. 오류.
5. fromkeys를 사용하여 목록을 사전으로 변환합니다
keys = {'a', 'e', 'i', 'o', 'u' } value = [] d = dict.fromkeys(keys, value) print(d) >>> {'i': [], 'u': [], 'e': [], 'a': [], 'o': []}6. 사전을 사용하여 switch
...case 문을 구현합니다.Python에는 switch...case 문이 없습니다. 문제는 파이썬의 아버지인 거북이 삼촌이 해결한 것입니다. 이는 이 문법이 과거에도 없었고 지금도 없고 앞으로도 없을 것이라는 뜻입니다. Python의 간결한 구문은 if ... elif를 사용하여 구현할 수 있기 때문입니다. 분기 판단이 너무 많으면 사전을 대신 사용할 수도 있습니다.
if arg == 0: return 'zero' elif arg == 1: return 'one' elif arg == 2: return "two" else: return "nothing" good data = { 0: "zero", 1: "one", 2: "two", } data.get(arg, "nothing")
7. iteritems를 사용하여 사전의 요소를 반복합니다.
Python은 사전의 요소를 반복하는 여러 가지 방법을 제공합니다. 첫 번째는 items 메서드를 사용하는 것입니다.
d = { 0: "zero", 1: "one", 2: "two", } for k, v in d.items(): print(k, v)items 메서드는 (key, value) 구성 이 방법의 단점은 매우 큰 사전을 반복할 때 목록 개체가 모든 요소를 메모리에 한 번에 로드하기 때문에 메모리가 즉시 두 배가 된다는 것입니다. 더 좋은 방법은 iteritems
for k, v in d.iteritems(): print(k, v)을 사용하는 것입니다. iteritems 반환 Iterator 객체는 실제로 필요할 때만 값을 생성합니다. 이 방법은 반복 프로세스 중에 이러한 데이터를 로드하는 데 추가 메모리가 필요하지 않습니다. Python3에는 Python2의 iteritems와 동일한 items 메소드만 있으며, iteritems라는 메소드 이름은 제거되었습니다.
8. 사전 파생을 사용하세요
推导式是个绝妙的东西,列表推导式一出,map、filter等函数黯然失色,自 Python2.7以后的版本,此特性扩展到了字典和集合身上,构建字典对象无需调用 dict 方法。
bad numbers = [1,2,3] d = dict([(number,number*2) for number in numbers]) good numbers = [1, 2, 3] d = {number: number * 2 for number in numbers}
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
위 내용은 Python 사전 목록을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!