使用Python

时间:2019-06-28 07:05:47

标签: python json

我对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"
}

4 个答案:

答案 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'}