2017-02-18 2 views
0

어떻게 성공적으로 for 루프를 실행하여 이렇게 인쇄 할 수 있습니까? 내가 루프를 사용하여 시도했다별도의 사전으로 사전을 분할하십시오.

Name1 = {"James" : "18"} 
Name2 = { "Bob" : "19"} 
Name3 = { "adam": "39"} 

그러나 나는 매우 실패되었습니다

names = {"James" : "18", 
"Bob" : "19", 
"adam": "39" 
} 

나는 너무로 출력을 할 수 있습니다. 나는 시도했다 :

names.items() 

반환 :

dict_items([('adam', '39'), ('Bob', '19'), ('James', '18')]) 

을하지만 위의 그림과 같이 별도의 사전에 반환해야합니다.

+0

당신이 사용했던 코드를 보여하세요? – ZdaR

+0

사전은 순서가 정해져 있지 않으므로 (적어도 3.6 이전),'Name1'은'{ "James": "18"}'또는'{ "Bob": "19"}'또는'{ " adam ":"39 "}'. 다른 사람들도 마찬가지입니다. 게다가 루프에서 글로벌 또는 로컬을 업데이트하는 것은 좋은 생각처럼 보이지 않습니다. – MSeifert

+0

@MSeifert 작성자가 정확한 주문을하지 않았으므로 사전을 "분할"하고 싶을 것입니다. – Delgan

답변

1
for i, (k,v) in enumerate(names.items(), 1): 
    print('Name%d = %r' % (i, {k:v})) 

Name1 = {'Bob': '19'} 
Name2 = {'adam': '39'} 
Name3 = {'James': '18'} 

참고 사전은 순서가 지정되지 않으므로 여기에있는 순서는 임의적입니다. 구체적인 주문이 필요한 경우 namesOrderedDict으로 작성하면이 코드가 원하는대로 처리됩니다.

편집 : 당신은 당신이 중복 키를 저장할 필요가 언급 한 이후, 당신이 이런 식으로 작업을 수행 할 수 있습니다

names = [("James", "18"), 
     ("Bob", "9"), 
     ("adam", "39")] 
for i, (k,v) in enumerate(names, 1): 
    print('Name%d = %r' % (i, {k:v})) 
+0

이것은'{'와':'앞에 여러 개의 (겉으로보기에 무작위 인) 공백을 포함하고있는 예상 된 출력으로부터 조금 벗어납니다. – MSeifert

+0

@Meifert 귀하의 요점은? 내 대답이나 질문에 대한 의견입니까? 임의로 공백을 추가하는 코드를 추가 하시겠습니까? – shx2

+0

필자의 대답은 현재의 응답이 예상 한 출력에서 ​​완전히 벗어났다는 것입니다. 그것은 (누가 알겠지만) 맞을 수도 있습니다! – MSeifert

관련 문제