2011-05-08 5 views
9

dict 함수를 사용하여 목록을 사전으로 변환하려고합니다. dict 함수의 일부 문제

inpu = input.split(",") 
dic = dict(inpu) 

위의 코드

는 문자열을 얻으려고 노력하고 split','과 이후 나는 사전에 목록을 변환 할 dict 기능을 사용한다.

ValueError: dictionary update sequence element #0 has length 6; 2 is required

아무도 도와 드릴까요 :

는 그러나, 나는이 오류가?

+0

이 우리에게주세요 크기가 2보다 아마 더 큰 귀하의 의견에 대한 예를 들어 설명해주십시오. – NPE

+0

'dict' 대신'set'을 사용하고 싶을 수도 있습니다. –

답변

17

dict에는 2 요소 컨테이너의 반복 가능 항목 (예 : 튜플 목록)이 필요합니다. 항목 목록을 전달할 수 없으며 키가 무엇이고 값이 무엇인지 모릅니다.

는이 작업을 수행하려고 :

>>> range(10) 
<<< [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> dict(range(10)) 
--------------------------------------------------------------------------- 
TypeError: cannot convert dictionary update sequence element #0 to a sequence 

dict이 목록은 다음과 같이 예상 :

>>> zip(lowercase[:5], range(5)) 
<<< 
[('a', 0), 
('b', 1), 
('c', 2), 
('d', 3), 
('e', 4)] 

튜플의 첫 번째 요소는 키가되고, 두 번째는 값이됩니다.

>>> dict(zip(lowercase[:5], range(5))) 
<<< 
{'a': 0, 
'b': 1, 
'c': 2, 
'd': 3, 
'e': 4} 
0

사전은 키 - 값 쌍으로 키 - 값을 키와 일치시키는 데 필요합니다. 입력을 플랫리스트로 나누고 있습니다. 이것이 파이썬이이 경우에 불평하는 이유입니다. 키로 지정할 항목과 값으로 지정할 항목을 모릅니다.

2

Python Data structures에 나열된 문서. dict() 생성자는 튜플로 저장된 키 - 값 쌍 목록에서 직접 사전을 작성합니다.

그래서 INPU 배열 예를 들어, 양식을 각 위치에서 ('키', '값')이어야합니다

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) 
{'sape': 4139, 'jack': 4098, 'guido': 4127} 

사용자의 입력 배열은