问题描述
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]
。这样的改变就能做到。
您可以按照此答案
或使用此:
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')