Python處理Dict生成json
問(wèn)題描述
情況是這樣:json文件中存在一個(gè)值為
'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']} ]}
由于之前的腳本的處理過(guò)于簡(jiǎn)單粗暴。現(xiàn)實(shí)要將'unknown'給替換成字典中的值。以下是我處理的一段Test code ,在Ipython中:
import jsonf = 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'}
問(wèn)題:1, 怎么處理“unknown”中的list,用for的話,怎么輸出?2, 怎么處理“unknown”使其能輸出如下的結(jié)果:
'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'
謝謝!~
問(wèn)題解答
回答1:# 無(wú)非就是list套dict,一層一層往下寫(xiě)就是了# 輸出正常的for (k,v) in he.items(): if k != ’unknown’:print k,’:’,v[0] else:# unknown對(duì)應(yīng)的值是listfor it in v: # it是dict print it.get(’key’), ’:’, it.get(’value’)[0]回答2:
要學(xué)會(huì)優(yōu)雅的處理數(shù)據(jù),只要把unknown 取出來(lái)再合并進(jìn)去就行了。
unknown = headers[’unknown’]headers.pop(’unknown’)set(map(lambda x: (x[’key’], x[’value’][0])))headers = dict(headers.items() + unknown)回答3:
headers.update({_[’key’]: _[’value’][0] for _ in headers[’unknown’]})headers.pop(’unknown’)print headers
相關(guān)文章:
1. mysql - AttributeError: ’module’ object has no attribute ’MatchType’2. dockerfile - 為什么docker容器啟動(dòng)不了?3. macos - mac下docker如何設(shè)置代理4. 請(qǐng)教各位大佬,瀏覽器點(diǎn) 提交實(shí)例為什么沒(méi)有反應(yīng)5. javascript - webapp業(yè)務(wù)流程基本一致,多套主題(樣式基本不一樣,交互稍有偏差)管理,并且有不斷有新增主題,該如何設(shè)計(jì)組件化架構(gòu)?6. javascript - 用rem寫(xiě)的頁(yè)面,安卓手機(jī)顯示文字是正常的,蘋(píng)果顯示的文字是特別小的是為什么呢7. javascript - 學(xué)習(xí)網(wǎng)頁(yè)開(kāi)發(fā),關(guān)于head區(qū)域一段腳本的疑惑8. javascript - JS設(shè)置Video視頻對(duì)象的currentTime時(shí)出現(xiàn)了問(wèn)題,IE,Edge,火狐,都可以設(shè)置,反而chrom卻...9. apache - 本地搭建wordpress權(quán)限問(wèn)題10. javascript - 從mysql獲取json數(shù)據(jù),前端怎么處理轉(zhuǎn)換解析json類型
