Programing

목록의 키와 기본값이 0으로 된 사전을 어떻게 만들 수 있습니까?

lottogame 2020. 6. 27. 11:01
반응형

목록의 키와 기본값이 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의 솔루션은 생성기를 사용하기 때문에 자신의 답변에 대한 설명을 볼 수 있으므로 더 좋습니다.

참고 URL : https://stackoverflow.com/questions/3869487/how-do-i-create-a-dictionary-with-keys-from-a-list-and-values-defaulting-to-say

반응형