如何将dict转储到JSON文件?

qyyhg6bp  于 2022-11-19  发布在  其他
关注(0)|答案(7)|浏览(171)

我有这样一条敕令:

sample = {'ObjectInterpolator': 1629,  'PointInterpolator': 1675, 'RectangleInterpolator': 2042}

我不知道如何将dict转储到JSON文件,如下所示:

{      
    "name": "interpolator",
    "children": [
      {"name": "ObjectInterpolator", "size": 1629},
      {"name": "PointInterpolator", "size": 1675},
      {"name": "RectangleInterpolator", "size": 2042}
     ]
}

有没有一个Python的方式来做到这一点?
您可能猜到我想要生成一个d3树图。

sigwle7e

sigwle7e1#

import json
with open('result.json', 'w') as fp:
    json.dump(sample, fp)

中 的 每 一 个
这 是 一 种 更 简单 的 方法 。
在 第 二 行 代码 中 , 创建 文件 result.json 并 将 其 作为 变量 fp 打开 。
在 第 三 行 中 , 您 的 dict sample 被 写入 result.json !

bfnvny8b

bfnvny8b2#

合并@mgilson和@gnibbler的答案,我发现我需要的是这样的:

d = {
    "name": "interpolator",
    "children": [{
        'name': key,
        "size": value
        } for key, value in sample.items()]
    }
j = json.dumps(d, indent=4)
with open('sample.json', 'w') as f:
    print >> f, j

这样,我就得到了一个打印得很漂亮的json文件。http://www.anthonydebarros.com/2012/03/11/generate-json-from-sql-using-python/

nuypyhwy

nuypyhwy3#

d = {"name":"interpolator",
     "children":[{'name':key,"size":value} for key,value in sample.items()]}
json_string = json.dumps(d)

从python 3.7开始,保留了字典的顺序https://docs.python.org/3.8/library/stdtypes.html#mapping-types-dict
字典保留插入顺序。请注意,更新键不会影响顺序。删除后添加的键将插入到末尾

vcirk6k6

vcirk6k64#

这应该给予你一个开始

>>> import json
>>> print json.dumps([{'name': k, 'size': v} for k,v in sample.items()], indent=4)
[
    {
        "name": "PointInterpolator",
        "size": 1675
    },
    {
        "name": "ObjectInterpolator",
        "size": 1629
    },
    {
        "name": "RectangleInterpolator",
        "size": 2042
    }
]
slwdgvem

slwdgvem5#

精美印刷格式:

import json

with open(path_to_file, 'w') as file:
    json_string = json.dumps(sample, default=lambda o: o.__dict__, sort_keys=True, indent=2)
    file.write(json_string)
kkbh8khc

kkbh8khc6#

还想添加这个(Python 3.7)

import json

with open("dict_to_json_textfile.txt", 'w') as fout:
    json_dumps_str = json.dumps(a_dictionary, indent=4)
    print(json_dumps_str, file=fout)

**更新(11-04-2021):*所以我添加这个例子的原因是因为有时候你可以使用print()函数写入文件,这也展示了如何使用缩进(非缩进的东西是邪恶的!!)。 然而 * 我最近开始学习线程,我的一些研究表明print()语句并不总是线程安全的。所以如果你需要线程,你可能要小心使用这个。

crcmnpdw

crcmnpdw7#

如果使用Path

example_path = Path('/tmp/test.json')
example_dict = {'x': 24, 'y': 25}
json_str = json.dumps(example_dict, indent=4) + '\n'
example_path.write_text(json_str, encoding='utf-8')

相关问题