728x90
반응형
질문 : 파이썬 사전 이해
파이썬에서 (키에 대해) 딕셔너리 컴프리헨션을 만들 수 있습니까?
딕셔너리 컴프리헨션 없이 다음과 같이 사용할 수 있습니다.
l = []
for n in range(1, 11):
l.append(n)
이것을 리스트 컴프리헨션으로 줄일 수 있습니다 : l = [n for n in range(1, 11)]
.
그러나 사전의 키를 동일한 값으로 설정하고 싶다고 가정 해보십시오. 내가 할 수있는:
d = {}
for n in range(1, 11):
d[n] = True # same value for each
나는 이것을 시도했다 :
d = {}
d[i for i in range(1, 11)] = True
그러나 for
SyntaxError
가 발생합니다.
또한 (이 부분은 필요하지 않지만 궁금한 점이 있습니다) 사전의 키를 다음과 같이 여러 가지 값으로 설정할 수 있습니까?
d = {}
for n in range(1, 11):
d[n] = n
딕셔너리 컴프리헨션으로 가능합니까?
d = {}
d[i for i in range(1, 11)] = [x for x in range(1, 11)]
이것은 또한 for
SyntaxError
를 발생시킵니다.
답변
Python 2.7+에는 딕셔너리 컴프리헨션이 있지만 시도하는 방식으로 작동하지 않습니다. 리스트 컴프리헨션와 마찬가지로 그들은 새로운 사전을 만듭니다. 기존 사전에 키를 추가하는 데 사용할 수 없습니다. 또한 원하는 경우 더미 값을 지정할 수 있지만 키와 값을 지정해야합니다.
>>> d = {n: n**2 for n in range(5)}
>>> print d
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
모두 True로 설정하려면 다음을 수행하십시오.
>>> d = {n: True for n in range(5)}
>>> print d
{0: True, 1: True, 2: True, 3: True, 4: True}
당신이 요구하는 것은 기존 사전에 한 번에 여러 키를 설정하는 방법입니다. 그것에 대한 직접적인 지름길은 없습니다. 이미 보여준 것처럼 반복하거나 딕셔너리 컴프리헨션를 사용하여 새 값으로 새 dict를 만든 다음 oldDict.update(newDict)
를 수행하여 새 값을 이전 dict에 병합 할 수 있습니다.
출처 : https://stackoverflow.com/questions/14507591/python-dictionary-comprehension
728x90
반응형
'프로그래밍 언어 > Python' 카테고리의 다른 글
Python의 subprocess.PIPE에 대한 비 차단 읽기 (0) | 2021.10.06 |
---|---|
Python에서 HTTP GET을 수행하는 가장 빠른 방법 (0) | 2021.10.06 |
Python에서 exit ()와 sys.exit ()의 차이점 (0) | 2021.10.01 |
Python 딕셔너리에서 키를 제거하는 방법 (0) | 2021.10.01 |
Python에서 유형을 확인하는 표준 방법 (0) | 2021.09.30 |