문제

저장된 목록에서 Python 사전을 만들려고합니다. 이 첫 번째 방법은 작동합니다

>>> myList = []
>>> myList.append('Prop1')
>>> myList.append('Prop2')
>>> myDict = dict([myList])

그러나 다음 방법은 작동하지 않습니다

>>> myList2 = ['Prop1','Prop2','Prop3','Prop4']
>>> myDict2 = dict([myList2])
ValueError: dictionary update sequence element #0 has length 3; 2 is required

그래서 Append를 사용하는 첫 번째 방법이 왜 작동하지만 두 번째 방법이 작동하지 않습니까? 차이가 있습니까? myList 그리고 myList2?

편집하다

다시 확인했습니다 myList2 실제로 두 개 이상의 요소가 있습니다. 이를 반영하기 위해 두 번째 예제를 업데이트했습니다.

도움이 되었습니까?

해결책

당신은 잘못하고있어.

그만큼 dict() 생성자는 항목 목록을 가져 가지 않습니다 (단일 항목 목록이 포함 된 목록이 훨씬 적음). 2 요소 반복이 필요합니다. 따라서 코드를 변경 한 경우 :

myList = []
myList.append(["mykey1", "myvalue1"])
myList.append(["mykey2", "myvalue2"])
myDict = dict(myList)

그러면 당신은 당신이 기대하는 것을 얻을 것입니다 :

>>> myDict
{'mykey2': 'myvalue2', 'mykey1': 'myvalue1'}

이것이 작동하는 이유 :

myDict = dict([['prop1', 'prop2']])
{'prop1': 'prop2'}

두 개의 요소를 포함하는 목록 인 하나의 요소를 포함하는 목록으로 해석하기 때문입니다.

본질적으로, dict 생성자는 첫 번째 인수를 취하고 다음과 유사한 코드를 실행합니다.

for key, value in myList:
    print key, "=", value
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top