【问题标题】:Generating json file from dict python with changing values from function从 dict python 生成 json 文件,并从函数中更改值
【发布时间】:2021-06-24 11:14:55
【问题描述】:

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

    {"data":[  
    {"key":"Shyam", "value":10.4},  
    {"key":"Bob", "value":12.5},  
    {"key":"Jai", "value":24.2}  
]}  

这是只添加一个键值对时的样子:

{
"key": "Amadm",
"value": 14.5
}

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

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,就像我在示例中显示的示例一样。

【问题讨论】:

  • 这个问题基本上是关于如何向现有字典添加新键?或者如何用多个键填充一个新的字典?这应该在documentation
  • 我需要我的 json 与多个对象在一起我不知道该怎么做,因为我的函数一次生成一个字典。
  • 那么你应该修改你的函数来生成一个包含你需要的所有值的字典,或者更新一个现有的字典。

标签: python json dictionary


【解决方案1】:

你正在创建一个字典,你想要的是一个字典列表:

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

# 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) 

输出:

{
    "data": [
        {
            "name": "rrqct",
            "value": 162
        },
        {
            "name": "vbuyq",
            "value": 422
        },
        {
            "name": "kfyqt",
            "value": 7
        }
    ]
}

【讨论】:

  • 好的,这就是我需要的谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
相关资源
最近更新 更多