在python 3.7中按值对python dict进行排序

问题描述

我有一个类似下面的字典:

d = {"string0": 0,"string2": 2,"string1": 1}

我想按int值对它进行排序,以便:

d = {"string0": 0,"string1": 1,"string2": 2}

我知道我可以借助内置函数sorted()和lambda函数指定key自变量来对列表进行排序,如下所示:

sorted_d = {k: v for k,v in sorted(d.items(),key=lambda i: i[1])}
       

但是由于某种原因,它似乎不起作用,因此该字典仍然保持原始状态。

解决方法

您的密钥是1[1],它是无效的Python。您需要i[1]。这样的改变就能做到。

,

您可以按照此答案

Click here

或使用此:

import os
import re
import glob
import datetime

path = r"c:\Python"
mylist = [f for f in glob.glob("*.vhdl")]
print(mylist)

for i in mylist:
    filepath = os.path.join(path,i)
    with open(filepath,'r+') as f:
        content = f.read()
        last_update = re.findall("Last\supdate\:\s+(\d{4}-\d{2}-\d{2})",content)
        modified = os.path.getmtime(filepath)
        modified_readable = str(datetime.datetime.fromtimestamp(modified))[:10]
        #print(content)
        #print(last_update)
        #print(modified_readable)
        #print("Date modified:",datetime.datetime.fromtimestamp(modified))
        if (modified_readable > last_update[0]):
            print(filepath,'UPDATE')
            text = re.sub(last_update[0],modified_readable,content)
            f.seek(0)
            f.write(text)
            f.truncate()
        else:
            print(filepath,'NO CHANGE')