我有一段代码,允许我在网站的 XHR 响应上打印使用 .json() 方法返回的字典项:
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 中,它们确实如此。有没有一种方法可以以与上面完全相同的格式打印所有字典值?我尝试了一些方法,但确实一事无成。
最佳答案
一般来说,给出一个dict,你可以这样做:
print(','.join(str(v) for v in dct.values()))
这里的问题是您不知道值的顺序。即 CSV 数据中的第一个值是 seasonId 吗?是tournamentRegionId吗?玩了多少分钟?或者这完全是你不知道的其他事情?
所以,我的观点是,除非您知道字段名称,否则如果数据以普通字典形式提供给您,则无法以任何可靠的顺序将它们放入字符串中。
如果您在其他地方使用 json
解码 XHR,则可以将 object_pairs_hook
设为 OrderedDict
:
from collections import OrderedDict
import json
...
data = json.loads(datastring, object_pairs_hook=OrderedDict)
现在保证数据与数据字符串的顺序相同,但这仅在数据字符串中的数据以特定方式排序时才有帮助(通常情况并非如此)。
关于python - 打印 .json() 返回的字典对象中的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26788807/