Python 사전 목록을 사용하는 방법

php中世界最好的语言
풀어 주다: 2018-04-09 17:54:17
원래의
2190명이 탐색했습니다.

이번에는 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...else

bad
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中怎样把矩阵转换为列表

Python连接MySQL的方式总结

위 내용은 Python 사전 목록을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿