2014-11-06 81 views
0

我正在嘗試更改XHR請求的參數以更改返回的字典對象的內容。看這個代碼爲起點:參數化字典打印聲明

teamStatDicts = responser[u'teamTableStats'] 
    for statDict in teamStatDicts: 

    print("{seasonId},{tournamentRegionId},{minsPlayed}," 
    "{tournamentId},".decode('cp1252').format(**statDict)) 

在這個例子中響應器是一個以.json()對象返回包含由XHR請求生成的各種字典對象。與上述代碼的典型的響應將顯示爲這樣:

9155,5,900 
9155,5,820 
... 
... 
... 
9155,5,900 
9155,5,820 

當XHR請求的參數改變時,某些字典項永遠是恆定的(例如,在上面的例子中的那些),然而,一些意願根據使用的參數而變化。

爲了不必使用大量的打印語句,我想將打印語句中的一些字典鍵分配給將在for loop內更改的變量。我對如何編寫所有循環起了很好的作用,但我不確定如何在上面的print語句中使用變量。

出於測試目的,我只想手動分配變量值,像這樣:

var1 = "yellowCard" 
var2 = "redCard" 

我想過的,也許這樣的事情作爲一個解決方案:

teamStatDicts = responser[u'teamTableStats'] 
     for statDict in teamStatDicts: 

     mynewvar = ("{seasonId},{tournamentRegionId},{minsPlayed},{",var1,"},{",var2,"}," 
     "{tournamentId},".decode('cp1252').format(**statDict)) 

     mynewvar = str(''.join(mynewvar[0:5])) 
     print newvar 

我不是當然,這看起來非常可行的語法。我的代碼有很多嵌套循環以適應不同的參數組合,所以在我開始切割它之前,我想知道以上是否會起作用,如果不是,如果有人可以建議一種替代語法?

回答

0

這是一個有點不清楚,你要完成什麼,但它看起來像你希望能夠構建格式字符串爲您的打印語句在progromattic方式。在那種情況下,不會有像下面這樣的工作嗎?

def print_json(keys, stat_dict, decode_format = 'cp1252'): 
    ''' 
    :type keys: [str,...] 
    :param keys: The list of key names to include from the stat_ditc 
    ''' 
    fstring = ','.join('{{{}}}'.format(key) for key in keys) 
    print(fstring.decode(decode_format).format(**stat_dict)) 

用法:

>>> print_json(['seasonId','tournamentRegionId'], statsDict) 
'9155,5' 
>>> print_json(['seasonId','tournamentRegionId','minsPlayed'], statsDict) 
'9155,5,900' 

然後,它只是一個使用右鍵設定在正確的時間的問題。