프레젠테이션이든: TypeError: # 39, & # 39 dict_values&. 파이썬 3.2.3 인덱스화를 지원하지 않는 객체에는 사용할 때

이건 내 코드:

{names[i]:d.values()[i] for i in range(len(names))}

이 기능은 사용할 때, 파이썬 2.7.3 완전히 과태료를 물게 된다. 그러나 '& # 39 라는 오류가 발생할 때, 나는 내가 사용하는 python 3.2.3 dict_values& # 39;; 객체에는 인덱스화를 지원하지 않는 '. 내가 할 수 있는 방법은 수정하십시오 코드 호환성이 3.2.3?

질문에 대한 의견 (4)
해결책

파이썬 딕트.발 주 () 에서 3 ',' (() '와' 함께 '딕트스키스 딕트.2템스 ()') a '보기' 가 아닌 되돌려줍니다 바뀌엇어요. [Here] 문서를 참조 (http://docs.python.org/3/library/stdtypes.html # 사전 보기입니다 객체에는). 따라서 마무리 할 수 있는 '목록' 에 대한 호출을 딕트.발 주 전화를 통해 ' ()' 같은 있습니다.

v = list(d.values())
{names[i]:v[i] for i in range(len(names))}
해설 (4)

간단한 버전의 코드에 다음과 같습니다.

dict(zip(names, d.values()))

스케쳐내 변경하십시오 동일한 구조를 유지할 수 있습니다.

vlst = list(d.values())
{names[i]: vlst[i] for i in range(len(names))}

(할 수 있는 것처럼 쉽게 동일팔레트에 '번역' 대신 ',' 브레스트 내부의 목록 (d.발 주 ()) it& # 39 의 목록에 다시 발생 때마다 낭비 때문에 그냥 그렇게 될 수 있다).

해설 (7)

'3' 의 방법 () 는 파이썬 딕트.발 주 되돌려줍니다 [사전 보기입니다 객체에는] (http://docs.python.org/3/library/stdtypes.html) 가 아니라 # 사전 보기입니다 객체에는 강조표시할? = 딕트비에프) 정보기술 (it) 등 바뀌엇어요 파이썬 2. 사전 보기에는 길이 될 수도 있지만, 테스트 및 지원 맴버십을 이터레이션된 don& # 39, t 지원 인덱스화를.

두 버전 모두 코드를 만들 수 있는 작업하십시오 둘 중 하나를 사용할 수 있습니다.

{names[i]:value for i,value in enumerate(d.values())}

빨리, 빨리, 빨리, 빨리 &amp &amp &amp &amp, 또는 , ;;;

values = list(d.values())
{name:values[i] for i,name in enumerate(names)}

가장 간단하고, 지금까지 가장 빠른 방법 같은 일을 할 두 가지 버전 다음과 같습니다.

dict(zip(names, d.values()))

그러나 이러한 모든 방법 부여하느뇨 결과에 따라 달라질 수 있습니다 '실제 영업사원이에요 콘텐트입니다 있습니다. 이를 극복하기 위해 사용할 수 있는 [ui_policytable_java_spe_policy 오르데레디스] (http://docs.python.org/3/library/collections.html? = 오르데레디스 강조표시할 # 콜레스티언스트러더드딕트) 를 대신 어떤 기억합니다 리하여 키 때문에 처음에 삽입됨 신뢰할 수 있는 순서를 뭐한테 반환됨 뒤에 '값 ()' 메서드입니다.

해설 (1)