我想要打印字典的格式(Python 2.7.3),並且字典中的元組作爲鍵。與其他類型的密鑰我可以做Python:將元組作爲鍵的格式化字典
>>> 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
您的引用說我不能使用「任意」字符串,但「一些」字符串可以用作字典鍵,如我的第一個示例中。那麼「關鍵字」是什麼意思?只有一個不能被解釋爲數字的字符串?沒有元組呢?雖然很奇怪的限制。 – mmj 2012-04-10 22:42:30
@mmj這真的歸結爲Python必須決定'1,1'是指'str'ing,''1,1''還是'tuple',(1,1)'這一事實。它做更簡單的事情,並假設它不是一個整數,它是一個字符串。 – agf 2012-04-10 22:46:23