문제가 발생 했을 때이 문제에 대한 코드를 줄이려고했습니다 .
기본적으로 중첩 된 사전 이해를 시도했지만 시도에 실패했습니다. 여기 내가 시도한 것입니다.
dict2 = {key:value for key, value in line.split(":")
for line in ["1:One", "2:Two", "4:Four"]}
print dict2
이걸 실행하면
NameError: name 'line' is not defined
그리고, 나는 반대 할 때 for
이 같은 문장을
dict2 = {key:value for line in ["1:One", "2:Two", "4:Four"]
for key, value in line.split(":")}
print dict2
결과
ValueError: need more than 1 value to unpack
dictionary
(또는 list
) 이해 의 중첩 구조에 대한 도움이 필요합니다 . 예를 들어 많은 도움이 될 것입니다.
사전 이해없이이를 수행하는 더 좋은 방법이 있습니다. 아래를 참조하십시오. 먼저 귀하의 접근 방식에 대한 문제를 해결하겠습니다.
이해에서 중첩 순서 를 사용해야 합니다 . 일반 루프를 중첩 할 때와 동일한 순서로 루프를 나열하십시오.
line.split()
표현은 두 항목의 시퀀스를 반환하지만 이들 각 항목은 하지 키와 값 터플; 대신 반복되는 요소는 하나 뿐입니다 . (key, value)
두 개의 결과를 두 항목에 할당하기 위해 산출되는 항목 의 '시퀀스'를 가지 도록 분할을 튜플로 래핑합니다 .
dict2 = {key:value for line in ["1:One", "2:Two", "4:Four"]
for key, value in (line.split(":"),)}
이것은 다음과 동일합니다.
dict2 = {}
for line in ["1:One", "2:Two", "4:Four"]:
for key, value in (line.split(":"),):
dict2[key] = value
중첩 루프는 다음을 수행 할 수 없기 때문에 필요합니다.
dict2 = {}
for line in ["1:One", "2:Two", "4:Four"]:
key, value = line.split(":")
dict2[key] = value
그러나이 경우 사전 이해력 대신 dict()
생성자를 사용해야합니다 . 이 원하는 모든 작업을 단순화, 2 요소의 시퀀스를 :
dict2 = dict(line.split(":") for line in ["1:One", "2:Two", "4:Four"])
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다