[英]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.