状況
pythonの辞書でキーに対して値が日にちで入ってるのでソートしたい。
試したこと
そもそも辞書だとキーと値があってややこしいので、まずはリストで考える
試しにやってみました。
list = [2020-1-2,2019-3-4,2020-2-4]
print(sorted(list))
結果
[2012, 2014, 2017]
なんじゃこりゃ
※どうやら引き算になってたみたいです。完全に盲点でした、教えていただいた方ありがとうございました!
こちらでやったらうまくいきました。
list = ['2020-1-2','2019-3-4','2020-2-4']
print(sorted(list))
辞書を日付基準でソートするためには?
それでは本題です。
リストは日付基準でソートする方法がたくさん出てきたが、辞書はあまりなかったので、今回やり方を考えてみました。
やり方としては
1.辞書を一旦、キーと値をセットの二次元配列に変換
2.二次元配列の状態でソートをかける
3.辞書に戻す
これなら調べて出てきたソートの方法が使える
2の二次元配列で日付基準でソートをかける方法に関しては以下の記事を参考にさせていただきました。
https://cre8cre8.com/python/sort_string_date.htm
実際に書いたコード
dict = {'panf1':'2020-2-1','panf2':'2019-3-4','panf4':'2020-1-3'}
list1 = []
sorted_dict={}
print(dict)
for i,j in dict.items():
list2=[]
list2.append(i)
list2.append(j)
list1.append(list2)
print(list1)
sorted_data = sorted(list1,key=lambda x:x[1],reverse=True)
print(sorted_data)
for k in sorted_data:
sorted_dict[k[0]]=k[1]
print(sorted_dict)