Python 按电子邮件行拆分后的一周天数排序
我有一个代码,可以从行中检索并拆分Python 按电子邮件行拆分后的一周天数排序,python,Python,我有一个代码,可以从行中检索并拆分,以获得一周中的天数,并计算该天出现的频率。我设法做到了这一点,但现在我被困在如何根据一周中的天数对列表进行排序上 filename = input("Please Enter A File Name: ") filehand = open (filename) count=dict() for line in filehand: if not line.startswith('From ') : continue line = line.sp
,以获得一周中的天数,并计算该天出现的频率。我设法做到了这一点,但现在我被困在如何根据一周中的天数对列表进行排序上
filename = input("Please Enter A File Name: ")
filehand = open (filename)
count=dict()
for line in filehand:
if not line.startswith('From ') : continue
line = line.split()
day = line[2]
count[day] = count.get(day,0)+1
Flist = list()
for key, value in count.items():
Flist.append((key, value))
Flist.sort(key = lambda l: (l[1], l[0]), )
for key, value in Flist:
print (key, value)
我的输出:
Please Enter A File Name: mbox.txt
Sat 61
Sun 66
Wed 292
Mon 299
Fri 315
Tue 372
Thu 392
有没有办法让它看起来像下面的列表
Mon 299
Tue 372
Wed 292
Thu 392
Fri 315
Sat 66
Sun 61
与此相反:
Flist.sort(key = lambda l: (l[1], l[0]), )
试试这个:
days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
Flist = sorted(Flist, key= lambda l : days.index(l[0]))
# Or,
Flist.sort(key = lambda l: days.index(l[0]))
与此相反:
Flist.sort(key = lambda l: (l[1], l[0]), )
试试这个:
days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
Flist = sorted(Flist, key= lambda l : days.index(l[0]))
# Or,
Flist.sort(key = lambda l: days.index(l[0]))
按照建议,使用集合.OrderedDict()
:
按照建议,使用集合.OrderedDict():
python字典中的键、值对本质上是不有序的。如果您想订购,请使用订购的DICT。更多信息:python字典中的键、值对本质上是不有序的。如果您想订购,请使用订购的DICT。更多内容:作为旁注,生成零字典的一种python方法是dict(zip(['Sun','Mon','Tue','Wed','Thu','Fri',[0]*7))。另一个旁注是,如果你想在周日开始你的一周,你可以使用
工作日。移动到末尾('Sun',last=False)
,生成零字典的一种Pythonic方法是dict(zip(['Sun','Mon','Tue','Wed','Thu','Fri',[0]*7))。另一方面,如果你想在周日开始你的一周,你可以使用工作日。移动到末尾('Sun',last=False)
。