与大多数其他的编程语言一样,Python容许创建并定义面向对象的类,类可以将代码与代码处理的数据相关联。

对于更加复杂的数据,一般的列表已经不能满足需求了。

我们可以使用字典dict将数据值与键相关联。

1,使用dict来完成处理

相关处理代码如下:

#DICT

def sanitize(time_string):
if '-' in time_string:
spliter='-'
elif ':' in time_string:
spliter=':'
else:
return time_string
(mins,secs)=time_string.split(spliter)
return mins+'.'+secs def get_coach_data(filename):
james_data = {}
try:
with open(filename) as f:
data=f.readline()
temp_data=data.strip().split(',')
#f_data=[sanitize(i) for i in temp_data]
james_data = {'Name':temp_data.pop(0),'Bir':temp_data.pop(0),'Times':str(sorted([sanitize(i) for i in temp_data])[0:3])} return james_data
except IOError as Ierror:
print('read file error: '+str(Ierror))
return None james=get_coach_data('./data/james2.txt')
print(james['Name']+"'s fastest times are: "+james['Times'])

2,使用python类:

在面向对象的世界里,代码通常称为类的方法,数据通常称为类的属性。实例化数据对象通常称为实例。

#class

class Athlete(object):
def __init__(self,name,bir=None,times=[]):
self.name=name
self.bir=bir
self.times=times def top3(self):
return sorted(set([sanitize(i) for i in self.times]))[0:3] def add_time(self,a_time):
self.times.append(a_time) def add_times(self,b_time):
self.times.extend(b_time) def sanitize(time_string):
if '-' in time_string:
spliter='-'
elif ':' in time_string:
spliter=':'
else:
return time_string
(mins,secs)=time_string.split(spliter)
return mins+'.'+secs def get_coach_data(filename):
try:
with open(filename) as f:
data=f.readline()
temp_data=data.strip().split(',')
return Athlete(temp_data.pop(0),temp_data.pop(0),temp_data)
except IOError as ioerror:
print('file open fail:' + str(ioerror))
return None james=get_coach_data('./data/james2.txt')
james.add_times(['1-1','1:2'])
print(james.name+"'s fastest times are: "+str(james.top3()))

最新文章

  1. 基于Spring+SpringMVC+Mybatis的Web系统搭建
  2. 【JavaScript】ES6 新语法
  3. nRF24L01芯片控制——迈向无线的第一步
  4. POJ 2151 Check the difficulty of problems (概率DP)
  5. 【poj1984】 Navigation Nightmare
  6. 整理QQ数据库sql语句
  7. AudioManager音频管理器
  8. Linq的一些记录
  9. Ant 修改项目pom.xml文件应用
  10. 排列的学习(java)
  11. uoj 55 紫荆花之恋 动态点分治+替罪羊式重构+treap
  12. 慢SQL汇总
  13. 【Android Studio安装部署系列】二十四、Android studio中Gradle插件版本和Gradle版本关系
  14. rem 是如何实现自适应布局的
  15. 容器化-Docker实战
  16. rpmlib(PayloadIsLzma) <= 4.4.6-1 is needed【转载】
  17. springcloud 入门 7 (zuul路由网关)
  18. Pycharm乱码解决
  19. 修改Ubuntu从文本界面登录
  20. 如何获取codeforces的完整数据?(玄学方法)

热门文章

  1. spawn-fcgi启动的一些报错问题
  2. LeetCode第十题-正则表达式匹配
  3. 新闻API接口
  4. Flask开发微电影网站(五)
  5. python的单、双、多分支流程控制
  6. pandas导入导出数据-【老鱼学pandas】
  7. vue入门知识点
  8. python运算符——逻辑运算符
  9. UOJ#36. 【清华集训2014】玛里苟斯 线性基
  10. [OpenCV-Python] OpenCV 中摄像机标定和 3D 重构 部分 VII