python: 列表 + 字典 + 向json文件追加数据

版权声明:本文系作者原创,未经允许,禁止转载。 https://blog.csdn.net/qq_27261889/article/details/83622691

在关于图像的深度学习中,我们有图像和对应的标签。通常我们将图像名字和对应的标签写在json文件中,通过字典的方式进行编码。我们可以看一个例子:
[{“disease_class”: 1, “image_id”: “1.jpg”},
{“disease_class”: 2, “image_id”: “2.jpg”},
{“disease_class”: 3, “image_id”: “3.jpg”}]
注意到这个最外边是一个方括号,也就是说整个文件是一个列表的格式。
列表由很多的很多字典组成,每一个字典都包含两个键值对,一个是图片的标签,也就是groundtruth,这里就是disease_class,另一个就是图像的名字,这里就是image_id。
这样写是有好处的,我这里就不说是什么好处的。
本文首先给出如何读取这样的一个json文件:

    with open(validate_path, 'r') as load_f:
        load_dict = json.load(load_f)
        num_image = len(load_dict)
        for image in range(num_image):
            index = load_dict[image]["disease_class"]
            path = load_dict[image]['image_id']
            image_data = cv_imread(path)

主要用到了一个python库中函数:json 的json.load函数。然后采用列表的方式读取每一个图像的序列号,再进一步依据字典的键值对方式来索引具体的键值。

那么怎样才能创建这样的josn文件呢(从这个例子可以看书,并不是所有的json文件都是一样的,josn文件有它自己的组合方式,看官可以查看其它人的博客就知道,但愿你看完这篇文章之后能够找到你想要的json文件格式的制作)
上面说到,首先是列表,列表中是一个个的字典。
直接先上代码:

image_aug = [] # 先创建一个列表
image_path = 'AgriculturalDisease_trainingset'
root = os.getcwd()
path = os.path.join(root, 'new_train', 'new_train_labels.json')
# print(path)
with open(path, 'r') as f:
    load_dict = json.load(f)
    num_images = len(load_dict)

    for image in range(num_images):
        index = load_dict[image]["disease_class"]
        path = load_dict[image]["image_id"]
        image_dict = {"disease_class":index, "image_id":path}
        image_aug.append(image_dict) # 依据列表的append对文件进行追加

with open('new.json', 'w', encoding='utf-8') as file:
    json.dump(image_aug, file, ensure_ascii=False)
    # 最后根据json的dump将上面的列表写入文件,得到最终的json文件

总结为以下三步:
1)先创建一个列表
2)依据列表的append对文件进行追加
3)最后根据json的dump将上面的列表写入文件,得到最终的json文件
写到这里大家应该是比较理解怎么对json文件进行追加的吧。
实际上是利用列表进行追加。

猜你喜欢

转载自blog.csdn.net/qq_27261889/article/details/83622691