Python 3.5:按键排序字典(日期)

问题描述 投票:0回答:1

我是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

提前致谢。

python sorting python-3.x dictionary
1个回答
0
投票

就像在评论中所说的那样,字典排序的是字符串而不是日期时间对象。所以解决方案是返回日期,并在写文件函数中格式化日期。

谢谢你的快速答案!

© www.soinside.com 2019 - 2024. All rights reserved.