2013-03-30 33 views
0

我試圖從字典中使用字符串插值獲取值。使用字符串插值獲取字典中的列表

這本字典有一些數字,和數字的列表:

d = { "year" : 2010, \ 
"scenario" : 2, \ 
"region" : 5, \ 
"break_points" : [1,2,3,4,5] } 

是否有可能引用字符串插值列表,或者我需要確定每個獨特的鑰匙?

這是我已經試過:

str = "Year = %(year)d, \ 
Scenario = %(scenario)d, \ 
Region = %(region)d, \ 
Break One = %(break_points.0)d..." % d 

我也試過%(break_points[0])d%(break_points{'0'})d

這是可以做到的,或者我需要給他們鑰匙,並將其保存爲整數在字典中?

+2

無關但丟失反斜槓 – jamylak

+0

認爲它在StackOverflow上更具可讀性。這不是代碼中的那樣。 – bozdoz

+0

@bozdoz Python允許使用多字符串文字'「」「'。 – 2013-03-30 00:20:17

回答

4

這是可能用新的樣式格式:

print "{0[break_points][0]:d}".format(d) 

print "{break_points[0]:d}".format(**d) 

 

str.format documentation

在其上調用此方法可以合作的字符串ntain文字或替換字段由大括號{}分隔。每個替換字段包含位置參數的數字索引或關鍵字參數的名稱。

Format string syntax

本身開始於arg_name要麼是數字或關鍵字的FIELD_NAME。如果它是一個數字,它指的是一個位置參數,如果它是一個關鍵字,則它指的是一個已命名的關鍵字參數。

...

的arg_name之後可以進行任何數量的索引的或屬性的表達式。 '.name'形式的表達式使用getattr()選擇指定屬性,而'[index]'形式的表達式使用__getitem__()進行索引查找。

+0

太棒了。兩者都發生了什麼? – bozdoz

+0

第一個將整個字典作爲第一個(索引'0')字段並將其索引兩次(例如'field0 ['break_points'] [0]')。其次將字典項目作爲單獨的命名字段,即作爲'。格式(break_points = [1,2,3,4,5],區域= 5,...)'。然後採取'break_points'字段的第一個元素。 –

+1

':d'與old-printf樣式的'%d'是相同的「十進制整數」表示。 –