이런 식으로 같은 값을 반복해야 하면, 형식화할 값을 살짝 변경해야 하는 경우 실수하기도 쉽고 코딩하기에도 성가시다. 예를 들어 다음 예제에서는 title() 메서드를 빼먹지 않고 여러 번 호출했지만, 어느 한 name에 대해서는 title() 메서드를 호출하고 다른 참조에 대해서는 메서드 호출을 잊어버릴 수도 있다. 그런 경우에는 두 이름 표기가 서로 일치하지 않게 된다.
name = '영희' formatted = template % (name.title(), name.title()) print(formatted) >>> 영희는 음식을 좋아해. 영희가 요리하는 모습을 봐요.
이런 문제를 해결하기 위해 파이썬의 % 연산자에는 튜플 대신 딕셔너리를 사용해 형식화하는 기능이 추가됐다. 딕셔너리의 키는 형식 지정자에 있는 키(예: %(key)s)와 매치된다. 다음 예제에서는 이 기능을 사용해 출력에 아무런 영향을 주지 않으면서 형식화 식의 오른쪽에 있는 값의 순서를 바꿨다. 이렇게 앞에서 설명한 첫 번째 문제점을 해결할 수 있다.
key = 'my_var' value = 1.234 old_way = '%-10s = %.2f' % (key, value) new_way = '%(key)-10s = %(value).2f' % { 'key': key, 'value': value} # 원래 방식 reordered = '%(key)-10s = %(value).2f' % { 'value': value, 'key': key} # 바꾼 방식 assert old_way == new_way == reordered