2016-06-07 3 views
0

DICT 같은목록 또는 튜플에서 사전의 키를 얻는 방법은 무엇입니까?

c = {1:'a', 2:'b', 3:'c'} 

나는 목록에 열쇠를 얻을 필요가있다. 글 쓰고,

x = [c.key()] 

하지만 작동하지 않습니다. 어떻게 할 수 있습니까? 사전의 키를 반복 할 수 있습니까? 내가 쓸 경우 의 키를 반환해야하는 c.key()입니다. 하지만 그렇게하지는 않습니다. 왜 ?

파이썬 3에서
+2

'x = c.keys()'를 시도 했습니까? – karthikr

답변

3

는, c.keys() 그래서 당신은 목록을 확인하려면 dict_keys 객체를 반환, 당신이해야 :

x = list(c.keys()) 

을 주조 dict_keys 객체가 첨자에없는 3 때문에 파이썬에서 필요하다

파이썬 2에서 x = c.keys()list을 반환합니다.

는 업데이트 : 당신이 그들을 상에 iterator 전화를하거나 직접 그들을 통해 루프하려고 할 때 기본적으로, 사전 그렇게

x = list(c) # list of keys 

t = tuple(c) # tuple of keys 

모두 파이썬에서 키의 목록과 튜플을 반환합니다, 자신의 키를 반환 2와 3

+0

gah, 내가 파이썬을 알고 있다고 생각했을 때, 그들은 계속 나아가서 새로운 객체 유형을 만든다. -_- –

+1

어쨌든'list'-ify로 가려면'.keys()'; 'list (c)'는'dict'가 키의 iterable이므로'keys'의'list'를 Py2와 Py3 모두에 대한 추가 작업없이 일관되게 얻을 것입니다. – ShadowRanger

+1

@ J.J : 큰 발전입니다. 키와 아이템 뷰는 set-like이며, 모든 경우에 그들은 backing dictionary에서 반복 가능한 뷰이므로,'dict' 내용의 불필요한 얕은 복사본을 만들지 않아야한다. 그것이 아프는 유일한 경우는 당신이 반복 할 때'dict'을 돌연변이시키는 것입니다. 키를 추가하거나 제거하고 반복을 유지해야하는 경우 명시 적으로 얕은 복사를 반복하기 전에 뷰 객체를'list'에 래핑해야합니다. – ShadowRanger

관련 문제