繁体   English   中英

如何使用python中的多个字典和一个列表创建JSON文件

[英]How to create a JSON file from several dictionaries and one list in python

我正在尝试以以下格式创建JSON文件:

[
{
  "startTimestamp" : "2016-01-03 13:55:00",
  "platform" : "MobileWeb",
  "product" : "20013509_825",
  "ctr" : 0.0150 
},
{...}
]

值以以下方式存储:

  • startTimeStamp在名为timestampsJSON的列表中
  • platform在字典中的格式为productBoughtPlatform[product] = platform
  • product在字典中的形式为productBoughtCount[product] = count
  • ctr在字典中的格式为CTR_Product[product] = ctr

我试图做这样的事情:

response = json.dumps({"startTimestamp":ts, for ts in timestampsJSON.items()
            "platform":plat, for plat in productBoughtPlatform.items()
            "product":pro, for pro, key in productBoughtCount.items()
            "ctr":ctr, for ctr in CTR_Product.items()})

我知道语法无效,但是有人可以建议一种在JSON中构造此数据的方法吗? 谢谢!

@William ,在这里我举了一个简单的例子。 请尝试一下尝试一下。

使用所有列表作为zip()的参数。

import json

dates = ["2018-2-5", "2017-7-5", "2016-5-2"]
ages = [23, 45, 34]
names = ["William Studart", "Rishikesh Agrawani", "Tam Fransis"]

output = [{"myDate": d, "myAge": a, "myName": n} for d, a, n in zip(dates, ages, names)]

print(json.dumps(output, indent=4))

输出:

[
    {
        "myName": "William Studart",
        "myAge": 23,
        "myDate": "2018-2-5"
    },
    {
        "myName": "Rishikesh Agrawani",
        "myAge": 45,
        "myDate": "2017-7-5"
    },
    {
        "myName": "Tam Fransis",
        "myAge": 34,
        "myDate": "2016-5-2"
    }
]

@William,您需要了解时间戳和产品事件之间的关系。 在您的示例中,您一方面拥有已排序的列表,而没有dict的字典。 由于您的字典都将产品作为键,因此您必须将产品链接到时间戳。 假设您具有与时间戳相关的产品事件列表,并且顺序相同,那么您需要一个字典列表:

output=
[
  {
    "startTimestamp" : timestampsJSON[i],
    "platform" : productBoughtPlatform[products[i]],
    "product" : products[i],
    "ctr" : CTR_Product[products[i]] 
  } 
  for i in range(len(timestampsJSON))]

response = json.dumps(output)

应该做的工作。 您可以适应时间戳和产品之间的关系。 如果您已经有以下格式的事件字典:

events={
  "2016-02-01 00:11:00":"20013509_825",
  "2016-02-01 01:11:00":"20013509_826",
  "2016-02-01 02:11:00":"20013509_825",
  "2016-02-01 03:11:00":"20013509_827"
}

#you build your output list
output=[
  {
    "startTimestamp" : timestamp,
    "platform" : productBoughtPlatform[product],
    "product" : product,
    "ctr" : CTR_Product[product] 
  } 
  for timestamp,product in events.iteritems()]

response = json.dumps(output)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM