[英]Python: Converting data to appropriate dictionary format
我过滤并处理了一些数据,我得到了以下格式:
{'2020-04-20': [('EUR', 34.02), ('USD', 30.18), ('AWG', 24.44), ('GPB', 20.68)],
'2020-04-25': [('EUR', 16.88), ('USD', 15.06), ('AWG', 12.17), ('GPB', 10.4)],
'2020-04-27': [('EUR', 17.14), ('GPB', 10.28), ('USD', 7.58), ('AWG', 5.06), ('CZK', 2.44)]
...
}
现在,我想将它保存为 JSON 格式,应该是这样的:
json_data = {
"filtered_data": [
{
"data": "2015-01-04",
"currency": "EUR",
"value": 34.02,
},
{
"data": "2015-01-04",
"currency": "USD",
"value": 30.18,
},
{
"data": "2015-01-04",
"currency": "AWG",
"value": 24.44,
},
...
]
}
我希望每种货币和价值都带有日期(即使在某些情况下数据相同)。
但是,我设法做到了这一点:
json_data = {"filtered_data": []}
for key, val in filtered_data.items():
for v in filtered_data.values():
temp_dict = {"timestamp": key, "currency": v[0], "value": v[1]}
json_data["filtered_data"].append(temp_dict)
json_data = json.dumps(json_data, indent=2)
输出:
{
"filtered_data": [
{
"timestamp": "2020-04-20",
"currency": [
"EUR",
34.02
],
"value": [
"USD",
30.18
]
}...
您可以使用嵌套循环对第一个字典执行遍历,将所有值附加到"filtered_data"
内部的out
变量:
d = {'2020-04-20': [('EUR', 34.02), ('USD', 30.18), ('AWG', 24.44), ('GPB', 20.68)],
'2020-04-25': [('EUR', 16.88), ('USD', 15.06), ('AWG', 12.17), ('GPB', 10.4)]}
out = {"filtered_data": []}
for i in d:
for j in d[i]:
out["filtered_data"].append({"data": i, "currency": j[0], "value": j[1]})
print(out)
输出:
{'filtered_data': [{'data': '2020-04-20', 'currency': 'EUR', 'value': 34.02}, {'data': '2020-04-20', 'currency': 'USD', 'value': 30.18}, {'data': '2020-04-20', 'currency': 'AWG', 'value': 24.44}, {'data': '2020-04-20', 'currency': 'GPB', 'value': 20.68}, {'data': '2020-04-25', 'currency': 'EUR', 'value': 16.88}, {'data': '2020-04-25', 'currency': 'USD', 'value': 15.06}, {'data': '2020-04-25', 'currency': 'AWG', 'value': 12.17}, {'data': '2020-04-25', 'currency': 'GPB', 'value': 10.4}]}
您可以先迭代dict
然后对所有重复日期的值使用 for-loop:
import json
res = [{'data':k, 'currancy':a, 'value':b} for k,v in dct.items() for a,b in v]
json_data = {"filtered_data": res}
print(json.dumps(json_data))
输出:
{"filtered_data": [{"data": "2020-04-20", "currancy": "EUR", "value": 34.02}, {"data": "2020-04-20", "currancy": "USD", "value": 30.18}, {"data": "2020-04-20", "currancy": "AWG", "value": 24.44}, {"data": "2020-04-20", "currancy": "GPB", "value": 20.68}, {"data": "2020-04-25", "currancy": "EUR", "value": 16.88}, {"data": "2020-04-25", "currancy": "USD", "value": 15.06}, {"data": "2020-04-25", "currancy": "AWG", "value": 12.17}, {"data": "2020-04-25", "currancy": "GPB", "value": 10.4}, {"data": "2020-04-27", "currancy": "EUR", "value": 17.14}, {"data": "2020-04-27", "currancy": "GPB", "value": 10.28}, {"data": "2020-04-27", "currancy": "USD", "value": 7.58}, {"data": "2020-04-27", "currancy": "AWG", "value": 5.06}, {"data": "2020-04-27", "currancy": "CZK", "value": 2.44}]}
我想你想要这样的东西:
j = {'2020-04-20': [('EUR', 34.02), ('USD', 30.18), ('AWG', 24.44), ('GPB', 20.68)],
'2020-04-25': [('EUR', 16.88), ('USD', 15.06), ('AWG', 12.17), ('GPB', 10.4)],
'2020-04-27': [('EUR', 17.14), ('GPB', 10.28), ('USD', 7.58), ('AWG', 5.06), ('CZK', 2.44)]
}
json_data = {"filtered_data": []}
for k,v in j.items():
for i in v:
temp_dict = {"timestamp": k, "currency": v[0], "value": v[1]}
json_data["filtered_data"].append(temp_dict)
print(json_data)
{'filtered_data': [{'timestamp': '2020-04-20', 'currency': ('EUR', 34.02), 'value': ('USD', 30.18)}, {'timestamp': ' 2020-04-20', 'currency': ('EUR', 34.02), 'value': ('USD', 30.18)}, {'timestamp': '2020-04-20', 'currency': ( 'EUR', 34.02), 'value': ('USD', 30.18)}, {'timestamp': '2020-04-20', 'currency': ('EUR', 34.02), 'value': ( 'USD', 30.18)}, {'timestamp': '2020-04-25', 'currency': ('EUR', 16.88), 'value': ('USD', 15.06)}, {'timestamp' : '2020-04-25', 'currency': ('EUR', 16.88), 'value': ('USD', 15.06)}, {'timestamp': '2020-04-25', 'currency' : ('EUR', 16.88), 'value': ('USD', 15.06)}, {'timestamp': '2020-04-25', 'currency': ('EUR', 16.88), 'value' : ('USD', 15.06)}, {'timestamp': '2020-04-27', 'currency': ('EUR', 17.14), 'value': ('GPB', 10.28)}, {' timestamp': '2020-04-27', 'currency': ('EUR', 17.14), 'value': ('GPB', 10.28)}, {'timestamp': '2020-04-27', '货币': ('EUR', 17.14), '价值': ('GPB', 10.28)}, {'timestamp': '2020-04-27', '货币': ('EUR', 17.14), '值':('GPB',10.28) }, {'timestamp': '2020-04-27', 'currency': ('EUR', 17.14), 'value': ('GPB', 10.28)}]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.