我有一个由JSON组成的文件,每个文件都有一行,并且希望按update_time reversed对文件进行排序。
示例JSON文件:
{ "page": { "url": "url1", "update_time": "1415387875"}, "other_key": {} }
{ "page": { "url": "url2", "update_time": "1415381963"}, "other_key": {} }
{ "page": { "url": "url3", "update_time": "1415384938"}, "other_key": {} }
想要输出:
{ "page": { "url": "url1", "update_time": "1415387875"}, "other_key": {} }
{ "page": { "url": "url3", "update_time": "1415384938"}, "other_key": {} }
{ "page": { "url": "url2", "update_time": "1415381963"}, "other_key": {} }
我的代码:
#!/bin/env python
#coding: utf8
import sys
import os
import json
import operator
#load json from file
lines = []
while True:
line = sys.stdin.readline()
if not line: break
line = line.strip()
json_obj = json.loads(line)
lines.append(json_obj)
#sort json
lines = sorted(lines, key=lambda k: k['page']['update_time'], reverse=True)
#output result
for line in lines:
print line
代码在示例JSON文件中运行良好,但如果JSON没有“更新时间”,则会引发KeyError异常。有没有其他的方法可以做到这一点?
编写一个使用
try...except
处理KeyError
的函数,然后将其用作key
参数,而不是lambda。可以将^{} 与默认值一起使用:
示例:
尽管如此,我还是会遵循费迪南德建议的^{} principle 方法——这样,当
page
键也丢失时,您也可以处理这种情况。让它失败并处理它要比检查各种各样的角落案例容易得多。相关问题 更多 >
编程相关推荐