如何在python中按日按顺序排序字典

vtu*_*ent 1 python dictionary calendar list ordereddict

我有2个清单

daydate=['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']

percentday=['0%', '17%', '27%', '11%', '7%', '19%', '19%']
Run Code Online (Sandbox Code Playgroud)

我做了转换成字典

daydic=dict(zip(daydate, percentday))

输出就像

{'Monday': '17%', 'Tuesday': '27%', 'Friday': '19%', 'Wednesday': '11%', 'Thursday': '7%', 'Sunday': '0%', 'Saturday': '19%'}
Run Code Online (Sandbox Code Playgroud)

我想按照下面的方式将这个字典排序为像白天的元素顺序一样

{'Sunday': '0%','Monday': '17%', 'Tuesday': '27%', 'Wednesday': '11%', 'Thursday': '7%', , 'Friday': '19%','Saturday': '19%'}
Run Code Online (Sandbox Code Playgroud)

帮我

jpp*_*jpp 6

字典不应被视为有序

他们,其实,插入排序在Python 3.6+(正式3.7+),但即使是这样,你应该更喜欢使用OrderedDict一个强大的有序映射.

此外,您永远不必手动输入星期几,您可以从中导入calendar.day_name并通过deque以下方式旋转:

from calendar import day_name
from collections import deque, OrderedDict

daydate = deque(day_name)
daydate.rotate(1)

percentday = ['0%', '17%', '27%', '11%', '7%', '19%', '19%']

res = OrderedDict(zip(daydate, percentday))

OrderedDict([('Sunday', '0%'),
             ('Monday', '17%'),
             ('Tuesday', '27%'),
             ('Wednesday', '11%'),
             ('Thursday', '7%'),
             ('Friday', '19%'),
             ('Saturday', '19%')])
Run Code Online (Sandbox Code Playgroud)