python dict json_Python处理Dict生成json

问 题

情况是这样:

json文件中存在一个值为

"headers":{

"connection":["close"],

"content_language":["en"],

"content_length":["3137"],

"content_type":["text/html"],

"server":["squid/3.1.23"],

"unknown":[

{"key":"mime_version","value":["1.0"]},

{"key":"date","value":["Sat, 25 Mar 2017 06:11:38 GMT"]},

{"key":"x_squid_error","value":["ERR_INVALID_URL 0"]},

{"key":"x_cache","value":["MISS from unknown"]},

{"key":"x_cache_lookup","value":["NONE from unknown:8080"]}

]

}

由于之前的脚本的处理过于简单粗暴。现实要将"unknown"给替换成字典中的值。

以下是我处理的一段Test code ,在Ipython中:

import json

f = open('file.json','r')

test_line = f.readline()

jsonstr = json.loads(test_line)

he = jsonstr['headers']

# 输出正常的

for (k,v) in he.items():

print k,':',v[0]

输出的是:

"connection":"close",

"content_language":"en",

"content_length":"3137",

"content_type":"text/html",

"server":"squid/3.1.23",

"unknown":[

{"value":["1.0"],"key":"mime_version"}

问题:

1, 怎么处理“unknown”中的list,用for的话,怎么输出?

2, 怎么处理“unknown”使其能输出如下的结果:

"connection":"close",

"content_language":"en",

"content_length":"3137",

"content_type":"text/html",

"server":"squid/3.1.23",

"mime_version":"1.0",

"date":"Sat, 25 Mar 2017 06:11:38 GMT",

"x_squid_error":"ERR_INVALID_URL 0",

"x_cache":"MISS from unknown",

"x_cache_lookup":"NONE from unknown:8080"

谢谢!~

解决方案

# 无非就是list套dict,一层一层往下写就是了

# 输出正常的

for (k,v) in he.items():

if k != 'unknown':

print k,':',v[0]

else:

# unknown对应的值是list

for it in v:

# it是dict

print it.get('key'), ':', it.get('value')[0]

扫一扫关注IT屋

微信公众号搜索 “ IT屋 ” ,选择关注与百万开发者在一起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值