【Python】字典内容写入json文件


Python中有序字典和无序字典,一键多值字典。web

Python将字典内容写入json文件。json


一、无序字典

目前了解三种,在Python中直接默认的是无序字典,这种不会按照你插入的顺序排序,即便你对字典排序后,返回的也是一个list变量,而不是字典,假若你将这个list字典后,又会变回无序字典。app

例子以下:ide

import operator

x = {"label": "haha", "data": 234, "score": 0.3}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))
print x
print type(x)
print sorted_x
print type(sorted_x)
print dict(sorted_x)

这里写图片描述

二、有序字典

若是咱们想保持字典按照咱们插入的顺序有序怎么办?能够用OrderedDict来初始化字典。svg

例子以下:ui

from collections import OrderedDict

x = OrderedDict()

x["label"] = "haha"
x["data"] = 234
x["score"] = 0.3

print x
print type(x)

这里写图片描述

三、一键多值字典

若是咱们想用一键多值字典怎么办,能够使用defaultdict,例子以下:this

from collections import defaultdict


video = defaultdict(list)
video["label"].append("haha")
video["data"].append(234)
video["score"].append(0.3)
video["label"].append("xixi")
video["data"].append(123)
video["score"].append(0.7)

print video
print type(video)

这里写图片描述

四、写入json

字典内容写入json时,须要用json.dumps将字典转换为字符串,而后再写入。spa

json也支持格式,经过参数indent能够设置缩进,若是不设置的话,则保存下来会是一行。3d

例子:code

4.1 无缩进:

from collections import defaultdict, OrderedDict
import json

video = defaultdict(list)
video["label"].append("haha")
video["data"].append(234)
video["score"].append(0.3)
video["label"].append("xixi")
video["data"].append(123)
video["score"].append(0.7)

test_dict = {
    'version': "1.0",
    'results': video,
    'explain': {
        'used': True,
        'details': "this is for josn test",
  }
}

json_str = json.dumps(test_dict)
with open('test_data.json', 'w') as json_file:
    json_file.write(json_str)

这里写图片描述

4.2 有缩进:

from collections import defaultdict, OrderedDict
import json

video = defaultdict(list)
video["label"].append("haha")
video["data"].append(234)
video["score"].append(0.3)
video["label"].append("xixi")
video["data"].append(123)
video["score"].append(0.7)

test_dict = {
    'version': "1.0",
    'results': video,
    'explain': {
        'used': True,
        'details': "this is for josn test",
  }
}

json_str = json.dumps(test_dict, indent=4)
with open('test_data.json', 'w') as json_file:
    json_file.write(json_str)

这里写图片描述