鱼C论坛

 找回密码
 立即注册
查看: 1689|回复: 4

[已解决]编写不可改变的自定义列表

[复制链接]
发表于 2017-8-6 08:32:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在视频中练习任务:编写不可改变的自定义列表,记录列表中每个元素被访问的次数:
给定代码没有问题
  1. class Countlist:
  2.     def __init__(self,*args):#参数是可变数量时,这里要用*args
  3.         self.values = [x for x in args]
  4.         self.count = {}.fromkeys(range(len(self.values)),0)
  5.     def __len__(self):
  6.         return len(self.value)
  7.     def __getitem__(self,key):
  8.         self.count[key] += 1
  9.         return self.values[key]
复制代码

我的问题是我将__init__中语句改成平常的字典,列表语句,结果却不对,我的代码如下,希望大家帮我找找原因
  1. class Countlist:
  2.     def __init__(self,*args):#参数是可变数量时,这里要用*args
  3.         self.values = []
  4.         for i in args:
  5.             self.values.append(i)
  6.         self.count = {}
  7.         self.count.fromkeys(self.values,0)#这里是在创建字典,并初始化为0

  8.     def __len__(self):
  9.         return len(self.value)

  10.     def __getitem__(self,key):
  11.         self.count[key] += 1
  12.         return self.values[key]
复制代码

最佳答案
2017-8-6 11:31:31
本帖最后由 wei_Y 于 2017-8-6 11:33 编辑
  1. |  fromkeys(iterable, value=None, /) from builtins.type
  2. |      Returns a new dict with keys from iterable and values equal to value.
复制代码


看一下formkeys的介绍。返回一个键由可迭代对象(iterable)的元素,并且每个键的值为value的新字典
  1. self.count = {}
  2. self.count = self.count.fromkeys(range(len(self.values)),0)
复制代码
捕获.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-6 09:30:17 | 显示全部楼层
range(len(self.values))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-6 10:37:50 | 显示全部楼层
SixPy 发表于 2017-8-6 09:30
range(len(self.values))

什么意思啊,要这样改吗self.count.fromkeys(range(len(self.values)),0),不过不行啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-6 11:31:31 | 显示全部楼层    本楼为最佳答案   
本帖最后由 wei_Y 于 2017-8-6 11:33 编辑
  1. |  fromkeys(iterable, value=None, /) from builtins.type
  2. |      Returns a new dict with keys from iterable and values equal to value.
复制代码


看一下formkeys的介绍。返回一个键由可迭代对象(iterable)的元素,并且每个键的值为value的新字典
  1. self.count = {}
  2. self.count = self.count.fromkeys(range(len(self.values)),0)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-6 15:47:20 | 显示全部楼层
wei_Y 发表于 2017-8-6 11:31
看一下formkeys的介绍。返回一个键由可迭代对象(iterable)的元素,并且每个键的值为value的新字典。

就是在字典前面再加上赋值的变量,这样可以了,多谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 22:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表