参数化字典打印语句

时间:2014-11-06 18:57:05

标签: python json dictionary python-requests

我正在尝试更改XHR请求的参数以更改返回的字典对象的内容。以此代码为出发点:

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

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

在此示例中,responser是一个返回的.json()对象,它包含XHR请求生成的各种字典对象。上面代码的典型响应如下所示:

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

当XHR请求的参数发生变化时,某些字典项将始终保持不变(例如上例中的那些),但是某些字典项将根据使用的参数而改变。

为了不必使用大量的print语句,我想将print语句中的一些字典键分配给将在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

我不确定这看起来非常可行。我的代码有很多嵌套循环来容纳各种参数组合,所以在我开始砍掉它之前,我想知道上面是否会起作用,如果有人可以建议一种替代语法呢?

1 个答案:

答案 0 :(得分:0)

有点不清楚你正在尝试完成什么,但看起来你希望能够以一种前瞻性的方式为你的print语句构建格式字符串 。在这种情况下,不会像以下那样做这个工作吗?

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'

然后,只需在正确的时间使用正确的按键设置。