반응형
목록의 키와 기본값이 0으로 된 사전을 어떻게 만들 수 있습니까? [복제]
이 질문에는 이미 답변이 있습니다.
나는 a = [1,2,3,4]
있고 싶어d = {1:0, 2:0, 3:0, 4:0}
d = dict(zip(q,[0 for x in range(0,len(q))]))
작동하지만 추악합니다. 더 깨끗한 방법은 무엇입니까?
dict((el,0) for el in a)
잘 작동합니다.
Python 2.7 이상은 dict 이해를 지원합니다. 그 구문은 {el:0 for el in a}
입니다.
d = dict.fromkeys(a, 0)
a
목록이며 0
기본값입니다. 사전의 모든 키에 대한 값으로 사용되는 하나의 객체이기 때문에 기본값을 변경 가능한 객체 (예 : list 또는 dict)로 설정하지 않도록주의 하십시오 ( 이 경우 해결 방법은 여기 참조 ). 숫자 / 문자열이 안전합니다.
파이썬 버전> = 2.7 및 파이썬 3 :
d = {el:0 for el in a}
특정 예에 매우 적합한 Tim의 대답 외에도 언급 할 가치가 collections.defaultdict
있습니다.
>>> d = defaultdict(int)
>>> d[0] += 1
>>> d
{0: 1}
>>> d[4] += 1
>>> d
{0: 1, 4: 1}
[1, 2, 3, 4]
귀하의 예와 같이 매핑 하기 위해서는 물에서 물고기입니다. 그러나 질문 한 이유에 따라 더 적절한 기술이 될 수 있습니다.
d = dict([(x,0) for x in a])
** 편집 Tim의 솔루션은 생성기를 사용하기 때문에 자신의 답변에 대한 설명을 볼 수 있으므로 더 좋습니다.
반응형
'Programing' 카테고리의 다른 글
GAC에서 어셈블리를 추출하는 방법은 무엇입니까? (0) | 2020.06.28 |
---|---|
VC2010 Express에서 포함 파일 'afxres.h'를 열 수 없습니다 (0) | 2020.06.27 |
비동기 네트워크 요청으로 신속한 루프 실행이 완료 될 때까지 기다립니다. (0) | 2020.06.27 |
double을 가장 가까운 정수 값으로 어떻게 변환 할 수 있습니까? (0) | 2020.06.27 |
요소가 포커스를 잃을 때 JavaScript 실행 (0) | 2020.06.27 |