我对Python和程序设计真的很陌生,所以我不知道该怎么做。 我有一个看起来像这样的JSON文件
{
"data_0_key_0": "GDPQ",
"data_0_key_1": "1860",
"data_0_values_0": "20.89",
"data_1_key_0": "GDPQ",
"data_1_key_1": "1861",
"data_1_values_0": "21.02",
"data_2_key_0": "GDPQ",
"data_2_key_1": "1862",
"data_2_values_0": "19.93",
"data_3_key_0": "GDPQ",
"data_3_key_1": "1863",
"data_3_values_0": "21.48"
}
我希望最终结果看起来像这样
{
"1860":"20.89",
"1861":"21.02",
"1862":"19,93",
"1863","21.48"
}
所以基本上
{
"data_x_key_1":"data_x_values_0"
}
答案 0 :(得分:1)
基本上,您需要在àpython词典中更改json,为此您可以使用像这样的json库
import json
json_values = """ {
"data_0_key_0": "GDPQ",
"data_0_key_1": "1860",
"data_0_values_0": "20.89",
"data_1_key_0": "GDPQ",
"data_1_key_1": "1861",
"data_1_values_0": "21.02",
"data_2_key_0": "GDPQ",
"data_2_key_1": "1862",
"data_2_values_0": "19.93",
"data_3_key_0": "GDPQ",
"data_3_key_1": "1863",
"data_3_values_0": "21.48"
} """
json_dictionnary = json.loads(json_values)
之后,您可以像这样遍历字典索引:
result = {}
for key in json_dictionnary:
if "key_1" in key:
num = key.split("_")[1]
value = json_dictionnary["data_" + num + "_values_0"]
result[key] = value
如果您对这条线的工作方式有任何疑问,请要求我提供解释!
答案 1 :(得分:1)
尝试这样,如果您对键的数量有所了解,请使用该值来设置范围:
d = {
"data_0_key_0": "GDPQ",
"data_0_key_1": "1860",
"data_0_values_0": "20.89",
"data_1_key_0": "GDPQ",
"data_1_key_1": "1861",
"data_1_values_0": "21.02",
"data_2_key_0": "GDPQ",
"data_2_key_1": "1862",
"data_2_values_0": "19.93",
"data_3_key_0": "GDPQ",
"data_3_key_1": "1863",
"data_3_values_0": "21.48"
}
d_new = dict()
for i in range(10):
try:
d_new.update({d["data_"+str(i)+"_key_1"]:d["data_"+str(i)+"_values_0"]})
except KeyError:
pass
print(d_new)
O / P:
{'1860': '20.89', '1861': '21.02', '1862': '19.93', '1863': '21.48'}
答案 2 :(得分:0)
您可以通过列表理解力来实现:
data = {
"data_0_key_0": "GDPQ",
"data_0_key_1": "1860",
"data_0_values_0": "20.89",
"data_1_key_0": "GDPQ",
"data_1_key_1": "1861",
"data_1_values_0": "21.02",
"data_2_key_0": "GDPQ",
"data_2_key_1": "1862",
"data_2_values_0": "19.93",
"data_3_key_0": "GDPQ",
"data_3_key_1": "1863",
"data_3_values_0": "21.48"
}
output = {data[v]:data[v.replace('key_1', 'values_0')] for (k,v) in enumerate(data) if 'key_1' in v }
print(output)
输出
{'1860':'20 .89','1861':'21 .02','1862':'19 .93','1863':'21 .48'}
答案 3 :(得分:0)
尝试一下:
data = {
"data_0_key_0": "GDPQ",
"data_0_key_1": "1860",
"data_0_values_0": "20.89",
"data_1_key_0": "GDPQ",
"data_1_key_1": "1861",
"data_1_values_0": "21.02",
"data_2_key_0": "GDPQ",
"data_2_key_1": "1862",
"data_2_values_0": "19.93",
"data_3_key_0": "GDPQ",
"data_3_key_1": "1863",
"data_3_values_0": "21.48"
}
new_dict = {}
count=0
for i in data:
#create dictionary key
key = 'data_' + str(count) + '_key_1'
#check key does not exist in dictionary
if 'key_1' in i and key not in new_dict:
new_dict[data[key]] = data['data_'+str(count)+'_values_0']
count += 1
print(new_dict)
O / P:
{'1860': '20.89', '1861': '21.02', '1862': '19.93', '1863': '21.48'}