2014-11-06 155 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' 

然后,它只是一个使用右键设定在正确的时间的问题。