dict를 초기화하기 위해 권장되는 구문은 무엇입니까(컬리 괄호 리터럴 {} 또는 dict() 함수).
Python을 배우기 위해 노력하고 있으며, 일반적인 코딩 기준에 주의를 기울이고 있습니다.이것은 별 의미 없는 따분한 질문처럼 보일지도 모르지만, 저는 배울수록 베스트 프랙티스에 초점을 맞추려고 노력하고 있습니다.그래서 나중에 나쁜 습관을 들일 필요가 없습니다.
dict를 초기화하기 위한 두 가지 일반적인 방법이 있습니다.
a = {
'a': 'value',
'another': 'value',
}
b = dict(
a='value',
another='value',
)
어떤 것이 "좀 더 비단어적인" 것으로 여겨집니까?어떤 걸 쓰세요? 왜요?
곱슬곱슬 교정기.키워드 인수 전달 대상dict()많은 시나리오에서 훌륭하게 동작하지만,는 키가 유효한 Python 식별자일 경우에만 맵을 초기화할 수 있습니다.
이 방법은 다음과 같습니다.
a = {'import': 'trade', 1: 7.8}
a = dict({'import': 'trade', 1: 7.8})
이렇게 하면 안 돼요.
a = dict(import='trade', 1=7.8)
다음과 같은 오류가 발생합니다.
a = dict(import='trade', 1=7.8)
^
SyntaxError: invalid syntax
첫 번째 곱슬머리 교정기.그렇지 않으면 키에 홀수 문자가 포함된 다음과 같은 일관성 문제가 발생합니다.=.
# Works fine.
a = {
'a': 'value',
'b=c': 'value',
}
# Eeep! Breaks if trying to be consistent.
b = dict(
a='value',
b=c='value',
)
첫 번째 버전이 더 좋습니다.
- 모든 종류의 키에 대해 동작하기 때문에 예를 들어 다음과 같이 말할 수 있습니다.
{1: 'one', 2: 'two'}두 번째 변형은 (일부) 문자열 키에서만 작동합니다.키의 종류에 따라 다른 종류의 구문을 사용하면 불필요한 불일치가 발생합니다. 고속화:
$ python -m timeit "dict(a='value', another='value')" 1000000 loops, best of 3: 0.79 usec per loop $ python -m timeit "{'a': 'value','another': 'value'}" 1000000 loops, best of 3: 0.305 usec per loop- 사전 리터럴의 특별한 구문이 사용되지 않았다면 존재하지 않았을 것입니다.
저는 거의 항상 곱슬머리 괄호를 사용합니다.단, 테스트를 작성할 때는 키워드 패킹/언패킹을 수행합니다.이 경우 dict()는 변경할 필요가 없기 때문에 유지보수가 훨씬 용이합니다.
a=1,
b=2,
대상:
'a': 1,
'b': 2,
또한 나중에 명명된 튜플 또는 클래스 인스턴스로 변환하고 싶은 상황도 있습니다.
구현 자체에서는 최적화에 대한 집착이 강하기 때문에 특별히 유지보수가 용이하지 않을 때는 항상 곱슬브레이스를 선호합니다.
테스트 및 구현에서 dict()는 그때 또는 미래에 추가된 키가 다음 중 하나가 될 가능성이 있을 때 사용하지 않습니다.
- 항상 문자열이 되는 것은 아니다.
- 숫자, ASCII 문자 및 밑줄만 포함할 수 없습니다.
- 정수로 시작합니다(
dict(1foo=2)SyntaxError가 발생합니다).
나는 첫 번째 옵션이 a['a'] 또는 a['other']로 값에 접근할 것이기 때문에 더 낫다고 생각한다.사전의 키는 문자열입니다.열쇠가 아닌 척 할 필요가 없습니다.키워드 구문은 처음에는 영리해 보이지만, 다시 보면 모호하다.이 방법은 고객님이 고객님과 함께 작업하고__dict__키워드는 나중에 속성이 됩니다.
참고로, 사전에 속성을 추가해야 하는 경우(사전에 첨부되었지만 키가 아닌 항목) 두 번째 양식이 필요합니다.이 경우 다음과 같이 한 번에 하나씩 임의의 문자를 가진 키를 사용하여 사전을 초기화할 수 있습니다.
class mydict(dict): pass
a = mydict()
a["b=c"] = 'value'
a.test = False
★★★★★★★★★★★★★★★★★.dict()를 선택하는 것이 좋습니다.
a=dict(zip(['Mon','Tue','Wed','Thu','Fri'], [x for x in range(1, 6)]))
언급URL : https://stackoverflow.com/questions/2853683/what-is-the-preferred-syntax-for-initializing-a-dict-curly-brace-literals-or
'source' 카테고리의 다른 글
| MariaDB 10.4 랜덤 퍼포먼스 저하 (0) | 2022.11.21 |
|---|---|
| Java에서 String.contains() 메서드에서 regex를 사용하는 방법 (0) | 2022.11.21 |
| MySQL 데이터베이스에 데이터를 삽입하려면 어떻게 해야 합니까? (0) | 2022.11.21 |
| centos7의 mariadb 10에서 열린 파일 제한을 늘릴 수 없습니다. (0) | 2022.11.21 |
| 요청 - 404를 받을 수 있는지 확인하는 방법 (0) | 2022.11.21 |