印刷用に辞書をフォーマットしたいのですが(Python 2.7.3)、辞書にはキーとしてタプルがあります。他の種類のキーで私ができる
>>> coord = {'latitude': '37.24N', 'longitude': '-115.81W', 'altitude':100}
>>> 'Coordinates: {0[latitude]}, {0[longitude]}'.format(coord)
'Coordinates: 37.24N, -115.81W'
同じことを試しましたが、タプルキーでは機能しません。
>>> a={(1,1):1.453, (1,2):2.967}
>>> a[1,1]
1.453
>>> 'Values: {0[1,1]}'.format(a)
Traceback (most recent call last):
File "<pyshell#66>", line 1, in <module>
'Values: {0[1,1]}'.format(a)
KeyError: '1,1'
なんで?フォーマット文字列でタプルキーを参照するにはどうすればよいですか?
ファローアップ
できないようです(以下の回答を参照)。agfがすぐに指摘したように、Pythonはこれを処理できません(実装されることを願っています)。それまでの間、次の回避策を使用して、フォーマット文字列でタプルキーを参照することができました。
my_tuple=(1,1)
b={str(x):a[x] for x in a} # converting tuple keys to string keys
('Values: {0[%s]}'%(str(my_tuple))).format(b) # using the tuple for formatting