用python编写类求圆面积一个函数处理学生成绩,要求:每个学生成绩为一个字典的数据项,循

一个字典就是一个键对应一个单徝的映射如果你想要一个键映射多个值,那么你就需要将这多个值放到另外的容器中 比如列表或者集合里面。比如你可以像下面这樣构造这样的字典:

选择使用列表还是集合取决于你的实际需求。如果你想保持元素的插入顺序就应该使用列表 如果想去掉重复元素就使用集合(并且不关心元素的顺序问题)。

你可以很方便的使用 collections 模块中的 defaultdict 来构造这样的字典 defaultdict 的一个特征是它会自动初始化每个 key 刚开始对應的值,所以你只需要关注添加元素操作了比如:

需要注意的是, defaultdict 会自动为将要访问的键(就算目前字典中并不存在这样的键)创建映射实體 如果你并不需要这样的特性,你可以在一个普通的字典上使用 setdefault() 方法来代替比如:

但是很多程序员觉得 setdefault() 用起来有点别扭。因为每次调鼡都得创建一个新的初始值的实例(例子程序中的空列表 [] )

一般来讲,创建一个多值映射字典是很简单的但是,如果你选择自己实现的话那么对于值的初始化可能会有点麻烦, 你可能会像下面这样来实现:

如果使用 defaultdict 的话代码就更加简洁了:
}

字典是python提供的另外一种数据类型它有以下几个特征:

1、字典和列表一样都是可变的数据类型

1、字典内的元素是“键(key):值(value)”类型的

2、字典是一种无序的数据集合,不会以元素的key或者value排序

3、列表是以偏移量来存取、查询数据而字典是根据key来查询、存取数据


 



其他的方法和用法各位google去吧!
二、用字典来改写第七課的内容
需要读取文本文件的数据格式有所改变( 再次提示:这里所提的练习用文件都可在《head first python》一书的官方网站上下载到

上一课'james.txt'文件中的數据全部为练习成绩(时间)

这一课'james2.txt'文件中变更为成绩(时间)前边加上了选手的名字、生日

此情况下改为字典类型来表示数据更为合适(当然用列表也可以,但容易让人费解)
格式化时间的sanitize函数保持不变(当下没理由改变它!)
'''此函数作用为格式化字符串将字符串中的':'和'-'更换为'.' 
參数time为待格式化的字符串'''
  

因为文件内包含了时间外的数据,如名字和生日所以获取文件内时间的函数get_times更改为get_data,并修改函数将所有元素存入athlete字典,用来获取名字、生日、成绩(时间)
 athlete = {} #定义一个字典以便后边代码为其添加元素
  
 
调用一下get_data函数来看一下结果:


返回前最快的三個时间值的get_top3函数也无需修改

  
  
 
调用下get_top3函数看结果:

  
  
 


好了,你还想最后打印结果好看点就把james_top3列表for一下吧
  

  

}

读取文件中的json字符串

直接用文件游标f,将json字符串连同读取和转成python字典一步完成此时用的是josn.load(f)

loads是将f游标中的字符串先读取出来,在把字符串转成python字典

load是一步到位把文件游標f转成python字典

json字符串转成字典{}

字典{}转成json字符串

}

我要回帖

更多关于 python编写类求圆面积 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信