python获取json中的key value_Python将JSON的key/values转换成key/value,其中value是一个数组...

我有一个JSON文件,其中有许多类似的条目:{

"area1": "California",

"area2": "Sierra Eastside",

"area3": "Bishop Area",

"area4": "Volcanic Tablelands (Happy/Sad Boulders)",

"area5": "Fish Slough Boulders",

"grade": "V6 ",

"route": "The Orgasm",

"type1": "Boulder",

"type2": "NONE",

"type3": "NONE",

"type4": "NONE",

},

我想将area和type项转换为数组:

^{pr2}$

我有一个几乎可以工作的代码:json_data=open('../json/routes_test.json')

datas = json.load(json_data)

datas_arrays = []

area_keys = ['area1','area2','area3','area4','area5']

type_keys = ['type1','type2','type3','type4']

for data in datas:

areaArray = []

typeArray = []

deleteArray = []

for k, v in data.iteritems():

for area_key in area_keys:

if (k == area_key):

areaArray.append(v)

deleteArray.append(k)

for type_key in type_keys:

if (k == type_key):

typeArray.append(v)

deleteArray.append(k)

for k in deleteArray:

del data[k]

data['area'] = areaArray

data['type'] = typeArray

datas_arrays.append(data)

print datas_arrays

print "********"

out = json.dumps(datas_arrays, sort_keys=True,indent=4, separators=(',', ': '))

print out

f_out= open('../json/toues_test_intoarrays.json', 'w')

f_out.write(out)

f_out.close()

问题是area数组完全乱了序,type数组是向后的,这是我不能拥有的。我觉得奇怪的是,一个是无序的,一个是有序的,但却是倒序的。在我看来,迭代应该确保它们按顺序排列。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Python 可以使用内置的 "json" 库来读 JSON 数据,并遍历其的键值对。 示例代码: ``` import json # 读 JSON 字符串 json_string = '{"key1": "value1", "key2": "value2", "key3": "value3"}' # 解析 JSON 字符串 data = json.loads(json_string) # 遍历键值对 for key in data: value = data[key] print(f"Key: {key}, Value: {value}") ``` 输出: ``` Key: key1, Value: value1 Key: key2, Value: value2 Key: key3, Value: value3 ``` ### 回答2: 本题要求编写一个程序,首先需要读入一个正整数n和n个整数,然后计算这些数的平均值并输出。接下来,需要找出所有大于平均值的数并输出。 首先,读入正整数n和n个整数,存入数组a。由于题目保证数据不超过长整型整数的范围,因此不需要进行数据范围的检查。 接着,计算这n个整数的平均值。可以用一个循环将所有数相加,然后除以n即可。注意要使用浮点数类型来存储平均值。 接下来,在遍历数组a时,将大于平均值的数输出。可以用一个循环遍历数组a,每当发现一个数大于平均值时,输出该数,然后在这个数后面输出一个空格。 最后,注意特殊情况的处理。如果输入的n不在有效范围内,则需要输出"invalid."。如果没有满足条件的数需要输出空行。 参考代码如下: ### 回答3: 这道题需要我们实现两个功能:一是计算平均值,二是找出大于平均值的数。 首先读入输入的n和n个整数,存入数组a。计算平均值的方法是将所有数相加,然后除以n。具体实现可以使用一个for循环来遍历数组a,将数组元素累加到一个变量,最后将其除以n得到平均值。需要注意的是,计算平均值的过程要注意数据类型,以避免溢出或精度问题。 接下来,再次遍历数组a,找出大于平均值的数,并将它们输出。由于不知道有多少个符合条件的数,我们需要使用一个动态数组来存储这些数。具体实现可以使用一个for循环遍历数组a,对于每个大于平均值的元素,将其添加到动态数组。最后,遍历动态数组,将其的元素输出即可。 如果输入的n不满足要求,则直接输出"invalid."即可。 完整代码如下:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值