我是Python的新手,我试图按键对字典进行排序。键是日期时间对象。它适用于4月1日,4月2日,4月3日,但它将4月4日放在1和2之间。我已经尝试了Ordereddict,如描述here.
我只是没有得到它。任何帮助表示赞赏...
我的代码:
for part in msg.walk():
if partNum == 0:
rawDate = part['Date']
date = parse_date(rawDate)
if part.get_content_type() == 'text/plain':
content = part.get_payload()
splitted_content = content.split('\r\n')
pending_tb = str(splitted_content[8])[70:].strip()
if partNum == 2:
values[date] = pending_tb
#TODO sort by date
partNum += 1
write_file(OrderedDict(sorted(values.items(), key=lambda t: t[0])))
parse_date函数:
def parse_date(rawdate):
date_tuple = email.utils.parsedate_tz(rawdate)
if date_tuple:
date = datetime.datetime.fromtimestamp(email.utils.mktime_tz(date_tuple))
formatted_date = date.strftime("%a, %d %b %Y %H:%M:%S")
return formatted_date
else:
print("ERROR: kon datum niet parsen.")
exit(-1)
write_file函数:
def write_file(values):
filepath = "temp.csv"
file = open(filepath, "a+")
for k,v in sorted(values.items()):
if len(k) > 0:
file.write(k + "\t\t" + v + "\n")
输出的预览:http://prntscr.com/ao6qst
提前致谢。
答案 0 :(得分:0)
就像评论中所说的那样,字典对字符串进行排序而不是日期时间对象。所以解决方案是返回日期,并在写文件函数中格式化日期。
感谢快速回答!