我正在尝试更改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
我不确定这看起来非常可行。我的代码有很多嵌套循环来容纳各种参数组合,所以在我开始砍掉它之前,我想知道上面是否会起作用,如果有人可以建议一种替代语法呢?
答案 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'
然后,只需在正确的时间使用正确的按键设置。