2014-01-05 3 views
1

의 이용 항목() 파이썬이 같은 함수 작성 때인쇄 순서 파이썬

def test(**argv): 
    for k,v in argv.items(): 
     print k,v 

및 이와 같은 함수를 사용

:

test(x = 1, y=2, z=3) 

인쇄물이있다 인쇄물의 결과가없는 이유?

궁금
y 2 
x 1 
z 3 

x 1 
y 2 
z 3 

여기에 어떤 도움이 필요합니까?

+0

가능한 복제본 [파이썬에서 kwargs를 반복하면서 순서를 결정하는 것은 무엇입니까?] (http://stackoverflow.com/questions/8977594/in-python-what-determines-the-order-while-iterating-through) -kwargs) – jonrsharpe

+0

@ jonrsharpe 아아, 죄송합니다. 지금 어떻게해야합니까? – CSnerd

+0

링크 된 질문을 읽고 거기에 답한 것에 동의하면 삭제하십시오. 그렇지 않으면 어떤 일이 발생할지 결정하기 위해 커뮤니티가 투표하기를 기다립니다. http://stackoverflow.com/help/duplicates를 참조하십시오. – jonrsharpe

답변

5

argv을 인쇄하면 해당 사전임을 알 수 있습니다.

사전은 파이썬에서 순서가 지정되지 않습니다. 그것이 출력을 얻는 이유입니다.

테스트

def test(**argv): 
    print type(argv) 

test() 

>>> <type 'dict'> 
2

사전 해시 테이블, 키의 순서는 보장되지 않습니다. 주문을 보존해야합니다. 즉, 요소 ​​추가 순서가 유지되는 collections.OrderedDict이 있습니다.

+0

'** kwargs'가 OrderedDict를 사용할 수 있습니까? post-hoc'sort'가 필요하다고 생각합니다 – jonrsharpe

+0

@jonrsharpe Correct. 키 값 쌍을 정렬 할 수 있지만 호출 방법에서 키워드 인수가 기록 된 순서는 검색 할 수 없습니다. – delnan

+0

@jonrsharpe, 네, 정렬 된 사전이 키워드 인수로 전달되면 순서가 유지되지 않습니다. – volcano