파이썬에서 새로운 사전 만들기


454

파이썬으로 사전을 만들고 싶습니다. 그러나 내가 보는 모든 예제는 목록에서 사전을 인스턴스화하는 것입니다. ..

파이썬에서 빈 사전을 새로 만들려면 어떻게해야합니까?

답변:


661

dict매개 변수없이 호출

new_dict = dict()

또는 간단히 쓰십시오

new_dict = {}

39
dict ()와 {} 사이에 차이점이 있습니까? 아니면 사람들이 다른 것을 선호합니까?
Matt

51
@ Matt 분명히 CPython 2.7 dict ()는 느리다 (6 배 느리다?), 참조 : doughellmann.com/2012/11/… 어쨌든 코드를 입력하고 이동하는 것이 더 쉬워서 어쨌든 생성자 구문을 선호하기 시작했습니다. dicts와 함수 호출 사이.
David Wheaton

16
파이썬 3.x에서 dict ()보다 {}를 사용하는 것이 3 배 빠르다는 것을 확인했습니다
Alex Azazel

8
네, 4 배 빠른 파이썬 3.6에 대해 얻을 {}이상 dict()5 회 []이상 list().
Michael Hall

10
대부분의 경우 6 배 더 오래 걸리더라도 중요하지 않습니다. 이는 여전히 눈에 띄게 적은 시간이기 때문입니다.
hypehuman

247

당신은 이것을 할 수 있습니다

x = {}
x['a'] = 1

107
새로운 요소를 추가하는 방법에 대한 다음 논리적 인 질문에 +1
Matt Klein

27

사전 설정 사전을 작성하는 방법을 아는 것도 유용합니다.

cmap =  {'US':'USA','GB':'Great Britain'}

# Explicitly:
# -----------
def cxlate(country):
    try:
        ret = cmap[country]
    except KeyError:
        ret = '?'
    return ret

present = 'US' # this one is in the dict
missing = 'RU' # this one is not

print cxlate(present) # == USA
print cxlate(missing) # == ?

# or, much more simply as suggested below:

print cmap.get(present,'?') # == USA
print cmap.get(missing,'?') # == ?

# with country codes, you might prefer to return the original on failure:

print cmap.get(present,present) # == USA
print cmap.get(missing,missing) # == RU

4
좋은 지적! 그러나 나는 약간 cxlate의 대답으로 대답이 너무 복잡해 보인다고 생각합니다 . 초기화 부분 만 유지하겠습니다. ( cxlate자체는 너무 복잡하다. 당신은 그냥 할 수있다 return cmap.get(country, '?').)
Daniel Darabos

어디에서나 변환 함수를 작성하거나 .get ()을 사용하는 대신 docs.python.org/2/library/… 를 사용하십시오 .
Sparr

1
아마도 문서가 완전히 불투명하다는 것을 제외하고는 아마도 끔찍합니다. 그들이 무엇을하는지, 왜해야하는지 전혀 모른다. 그리고 .get ()은 정확히 옳은 일을하는 것처럼 보이며 매우 유연합니다. 내 이해가 부족하다고 확신합니다. 이를 염두에두고 나의 질문은 : 왜 귀찮게 하는가? 여기에 무엇이 저장되고, 더 쉽고 여기에 더 빨리 저장됩니까? 이점은 정확히 무엇입니까?
fyngyrz

1
관련없는,하지만 당신은 명시 적으로 캐치 할 필요 KeyError를 제외하고 대신 베어의을 (같은 물건을 잡을 것이다 KeyboardInterruptSystemExit).
Arnav Borborah

Arnav, 물론 그렇습니다. 이에 따라 편집되었습니다. 감사합니다!
fyngyrz 2016 년


15
d = dict()

또는

d = {}

또는

import types
d = types.DictType.__new__(types.DictType, (), {})

차이점은 무엇이며 types.DictType.__new__(types.DictType, (), {})단지{}

2
이 읽는 사람의 경우 : 마지막으로 "솔루션"을 농담의 비트입니다 - 당신은 할 수 사용 (파이썬 2.x에서 적어도 -하지 않습니다 py3k에서 작업), 그러나 아무도는 자신의 마음이 지금하고 싶은 것 없다 그래서 ;-)
bruno desthuilliers


4
>>> dict.fromkeys(['a','b','c'],[1,2,3])


{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}

이 질문에 따르면 사전은 새로운 빈 인스턴스 여야합니다.
Wesam
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.