Python之Tuple

在COURSERA课程里面,老师教了两种sort Tuple的方法。
一种是:

dic = {'c':1,'b':2,'a':3}
ite = d.items()
t.sort()
print (t)

思路很清晰。意思是,你tuple不是不让sort嘛。我就利用dictionary里面的items 先把dic的key-value pair给输出,然后再sort(以key为目标)。恩,很赞。答案是Traceback。- -

Python 这只狗狗给我的回复是:
‘dict_items’ object has no attribute ‘sort’。
开始并不明白是几个意思,问题出在哪儿。直到我

print (d.items())

得到结果是:dict_items([(‘a’, 3), (‘c’, 1), (‘b’, 2)])。
从而发觉,Charles给的答案[(‘a’, 3), (‘c’, 1), (‘b’, 2)]。在python3.3.5已经不适用了。(顺便感慨一下python的更新速度,前两天因为matlab和python匹配地关系,卸载掉了python3.4(其实是直接删掉了)。发现python已经到3.5.0了,真是BT。。。)

但这样就不能sort dic的items了吗?其实不是的。Charcles给了另外一个办法。经测验OK!

dic = {'c':1,'b':2,'a':3}
t = sorted(d.items())
print (t)

乍一看,简洁了不少。其实就是把dic 的items和sort并在了一个命令行,只不过顺序啦,括号啦,sort有木有加ed啦。要注意一下。
经检验,结果正确。返回[(‘a’, 3), (‘b’, 2), (‘c’, 1)]。

很好。刚刚废话了一大堆。结果不小心删掉了。重来再来。不说废话。直接上菜!
这里写图片描述
这道题让把所有以’From ‘开头的句子中的‘Hour’找出来。再以‘Hour’的顺序print。啥意思?看desired output:这里写图片描述

写code最重要一点是一步步来。我们可以分析。首先是要找以‘From ‘开头,恩,这里有一个startswith得用吧;齐次,我们看看例句,每一个以‘From ’开头的句子的格式,可以发现,先用split()将其拆分,然后把第六项(index=5)找出来,就可以得到整个时间段,然后再用split(:)将其拆分,就得到Hour Min Second,然后再把第一项(index=0)读入,得到Hour。最后放进一个dic里面。输出。
好啦,直接上code啦。该吃饭啦~~~~

name = raw_input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name) #前文介绍过的【读入文件及其偷懒大法】
A = []
B = []
C = []

#筛选txt中以‘From ’开头的line,将其放置在一个List-A中。此时list中每个元素是line,类型为str。
for line in handle:
    if line.startswith('From '):
        A.append(line)
#print a # Pls ignore me

# 将list中的str类型的sens提取出。进行split()。每个a的第六项则为我们的time(格式为小时:分钟:秒)。
#将其放在list-B中。此时list中每个元素是time,类型为str。
for sens in A:
    a = sens.split()
    #print a[5]
    B.append(a[5])
#print B

# 同样将list中的str类型的time提取出。进行split(':'),因为时间是以semicolon划分的,
#所以我们用semicolon进行split。每个b的第一项则为我们得HOUR。将其放在list-C中。
for time in B:
    b = time.split(':')
    #print b
    C.append(b[0])
#print C 

# 将C中的hour进行count,放进dic-d中。这里我们采用一种比较Advanced方法,用get(),其意思是,
#在把list的元素排排好放进dic过程中,若dic中并没有list元素,即key,则给value1,若有,则+1。
#最后的最后,我们按照desired output的形式进行print。#CAVEAT: 写作业的时候用的是网页版的
#autograder,所以是直接print k,v;用python3.x的时候要记得加()括号小朋友哦!
d={}
for hour in C:
    d[hour]=d.get(hour,0)+1
#print d
item =d.items()
item.sort()
for k,v in item:
    print k,v

这里有一个需要注意点是我们在该题中常用的split用法。split()是连接Str和List,但更确切地说,是将str split后放在一个LIST里面。也就是说,split只能对str作用。那本题中list和str的转换很重要。所以这里面的几个for很重要….

大功告成。最近有点小忙。Python继续,C#也要开始学了,项目火烧眉毛。G某要坚持哦~!(*  ̄3)(ε ̄ *)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值