[PYTHON] 지역 ()을 사용하는 파이썬 사전 이해력은 KeyError를 제공합니다.
PYTHON지역 ()을 사용하는 파이썬 사전 이해력은 KeyError를 제공합니다.
>>> a = 1
>>> print { key: locals()[key] for key in ["a"] }
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <dictcomp>
KeyError: 'a'
이런 식으로 사전을 만들려면 어떻게해야합니까?
해결법
-
==============================
1.딕트 독해에는 고유 한 네임 스페이스가 있으며 해당 네임 스페이스의 locals ()에는. 기술적으로 말하면, 가장 바깥 쪽 iterable (여기에서 [ "a"])에 대한 초기 iterable을 제외한 모든 것은 가장 바깥 쪽 iterable을 인수로하여 중첩 된 함수로 거의 실행됩니다.
딕트 독해에는 고유 한 네임 스페이스가 있으며 해당 네임 스페이스의 locals ()에는. 기술적으로 말하면, 가장 바깥 쪽 iterable (여기에서 [ "a"])에 대한 초기 iterable을 제외한 모든 것은 가장 바깥 쪽 iterable을 인수로하여 중첩 된 함수로 거의 실행됩니다.
globals ()를 대신 사용하거나 dict comprehension 외의 locals () 사전에 대한 참조를 만든 경우 코드가 작동합니다.
l = locals() print { key: l[key] for key in ["a"] }
데모:
>>> a = 1 >>> l = locals() >>> { key: l[key] for key in ["a"] } {'a': 1} >>> { key: globals()[key] for key in ["a"] } {'a': 1}
-
==============================
2.대신 globals ()를 사용해보세요.
대신 globals ()를 사용해보세요.
print {key : globals()[key] for key in ["a"]}
왜냐하면 a는 dict comprehension의 범위에서 정의되지 않았기 때문입니다 (@MartijnPieters가 말했듯이).
from https://stackoverflow.com/questions/22485399/python-dictionary-comprehension-using-locals-gives-keyerror by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 클래스에서 메소드를 정렬하는 좋은 방법은 무엇입니까? (0) | 2018.10.19 |
---|---|
[PYTHON] 파이썬 : "튜플 목록"을 1 개의 평면 목록 또는 1 개의 매트릭스로 변환합니다. (0) | 2018.10.19 |
[PYTHON] 파이썬 - 두 문자열 간의 차이점 (0) | 2018.10.19 |
[PYTHON] Python ElementTree를 문자열로 변환 (0) | 2018.10.19 |
[PYTHON] AttributeError : 'datetime'모듈에 'strptime'속성이 없습니다. (0) | 2018.10.19 |