我有一段代码允许我使用.json()方法在网站的XHR响应中打印返回的字典项目:
teamStatDicts = responser[u'teamTableStats']
for statDict in teamStatDicts:
print("{seasonId},{tournamentRegionId},{minsPlayed},"
.decode('cp1252').format(**statDict))
以下列格式打印:
9155,5,900
9155,5,820
...
...
...
9155,5,900
9155,5,820
上面的方法工作正常,只要字典中的键永远不会改变。但是在我提到的一些XHR提交中,他们正在做。有没有办法可以打印所有字典值与上面完全相同的格式?我尝试了一些事情,但实际上并没有到达任何地方。
答案 0 :(得分:2)
一般来说,给一个词典,你可以这样做:
print(','.join(str(v) for v in dct.values()))
这里的问题是你不知道值的顺序。即是CSVI数据中第一个值是seasonId吗?是锦标赛地区吗? minsPlayed?或者它完全是你不了解的其他东西?
所以,我的观点是,除非你知道字段名称,否则如果数据以vanilla dicts的形式出现,则不能以任何可靠的顺序将它们放入字符串中。
如果您使用json
在其他地方解码XHR,则可以将object_pairs_hook
设为OrderedDict
:
from collections import OrderedDict
import json
...
data = json.loads(datastring, object_pairs_hook=OrderedDict)
现在数据保证与数据字符串的顺序相同,但这只有在数据字符串中的数据以特定方式排序时才有用(通常不是这种情况)。