首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过更改函数的值从dict python生成json文件

通过更改函数的值从dict python生成json文件
EN

Stack Overflow用户
提问于 2021-06-24 19:14:56
回答 1查看 56关注 0票数 0

我有生成数据的函数,我添加了dict,我希望我的json文件看起来像这样。1.要有多个数据,而不是像我的代码中那样只有一个键值对:

代码语言:javascript
代码运行次数:0
运行
复制
    {"data":[  
    {"key":"Shyam", "value":10.4},  
    {"key":"Bob", "value":12.5},  
    {"key":"Jai", "value":24.2}  
]}  

下面是只添加了一个键值对时的情况:

代码语言:javascript
代码运行次数:0
运行
复制
{
"key": "Amadm",
"value": 14.5
}

这是我在json转储之前分配给dict的代码。:

代码语言:javascript
代码运行次数:0
运行
复制
def gen_dict(key, value, ts):
    data = {
    "name": key,
    "value": value,
    "ts": ts
    }
    return data

json_object = json.dumps(gen_dict(gen_key(), gen_value()), indent = 4) 

因此,我的问题是如何在dict中分配多个键值对,然后将其转换为json obj,就像我在示例中展示的示例一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-24 19:31:46

您正在创建单个字典,您需要的是字典列表:

假设您每次调用gen_key()gen_value()都会生成一个数据实例,您可以使用:

代码语言:javascript
代码运行次数:0
运行
复制
# Some random key
def gen_key():
  return ''.join((random.choice(string.ascii_lowercase) for x in range(5))) 

# Some random value
def gen_value():
  return random.choice(range(1000))

s = json.dumps({"data": [ {
    "name": gen_key(), "value": gen_value()} for i in range(3)] }, indent = 4) 

输出:

代码语言:javascript
代码运行次数:0
运行
复制
{
    "data": [
        {
            "name": "rrqct",
            "value": 162
        },
        {
            "name": "vbuyq",
            "value": 422
        },
        {
            "name": "kfyqt",
            "value": 7
        }
    ]
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68114692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档