使用.json()返回的字典对象打印所有值

时间:2014-11-06 20:28:57

标签: python json dictionary

我有一段代码允许我使用.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提交中,他们正在做。有没有办法可以打印所有字典值与上面完全相同的格式?我尝试了一些事情,但实际上并没有到达任何地方。

1 个答案:

答案 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)

现在数据保证与数据字符串的顺序相同,但这只有在数据字符串中的数据以特定方式排序时才有用(通常不是这种情况)。