Python之Tuple

来源:互联网 发布:流程优化岗面试题目 编辑:程序博客网 时间:2024/05/19 00:14

在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 ditem =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 0
原创粉丝点击