have this example jsonl code and i try to sort this by timestamp
{"log_level": "DEBUG", "timestamp": "2022-12-04 18:04:09", "message": "Fry saw a man on the Mars yesterday"}
{"log_level": "INFO", "timestamp": "2022-12-03 11:21:35", "message": "Bender played a mall near the Square Garden today"}
{"log_level": "ERROR", "timestamp": "2022-12-03 11:21:42", "message": "Dr. Zoidberg took a mall at park day after tomorrow"}
{"log_level": "DEBUG", "timestamp": "2022-12-03 11:21:49", "message": "Fry built a fish at park today"}
{"log_level": "WARNING", "timestamp": "2022-12-03 11:21:55", "message": "Dr. Zoidberg brought a boat at park tomorrow"}
{"log_level": "ERROR", "timestamp": "2022-12-03 11:21:57", "message": "Farnsworth killed an apple near the Square Garden today"}
this is my code that should be sorted
def sort_merged_files(merged_file):
with open(merged_file) as writer:
dict = collections.defaultdict(list)
for obj in jsonlines.Reader(writer):
for k1, v1 in obj.items():
dict[k1].append(v1)
sorted_date = sorted(
dict, key=lambda x: datetime.strptime(x["timestamp"], "%Y-%m-%d")
)
print(sorted_date)
my error sorted_date = sorted(dict, key=lambda x:datetime.strptime(x["timestamp"], "%Y-%m-%d")) TypeError: string indices must be integers
EDIT 1 i solve this problem
def sort_merged_files(merged_file):
with open(merged_file) as reader:
print(type(reader))
list_log = []
## create list and add dictionary
for obj in jsonlines.Reader(reader):
print(obj)
list_log.append(obj)
sorted_list = sorted(
list_log, key=lambda x: time.mktime(time.strptime(x["timestamp"], "%Y-%m-%d %H:%M:%S")))
print(type(sorted_list))
## write sorted list in file
with open(merged_file, "w") as f:
for dic in sorted_list:
json.dump(dic, f)
f.write("\n")
del sorted_list, list_log