- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
以下程序的目标是学习 python 生成器和迭代器实现,以了解 Python 魔术方法。
我一直在执行 iteritems()
函数。另外,我想知道我是在朝着正确的方向前进,还是在理解 python 魔术方法时在概念上是错误的。
import random
class Random(object):
""" generate randomised int of specified length --> [r1, r2, r3....] """
def __init__(self, length = 1, rand_range = 100):
self.index = 0
self.generated_range = []
self.length = length if str(length).isdigit() else 1
self.rand_range = rand_range if str(rand_range).isdigit() else 100
def __iter__(self): return self
def next(self):
if self.index < self.length:
item = random.randrange(0, self.rand_range)
self.generated_range.append(item)
self.index += 1
return item
raise StopIteration
def __eq__(self, obj):
if self.length == obj.length and self.rand_range == obj.rand_range:
return True
return False
def __len__(self):
return self.length
def __contains__(self, item):
if not self.index == self.length:
while self.next(): continue
if item in self.generated_range:
return True
return False
def __getitem__(self, key):
if key in self.generated_range:
return key * 100
raise KeyError
def __setitem__(self, key, value):
raise NotImplemented
def __delitem__(self, key):
raise NotImplemented
def iteritems(self):
if not self.index == self.length:
while self.next(): continue
for item in self.generated_range:
yield item
if __name__ == '__main__':
r1 = Random(10)
print [ r for r in r1]
print 10 in r1
r2 = Random(20)
print r2.iteritems()
最佳答案
iteritems应该为字典返回一系列 (key, val) 对,所以我认为它不适合你的类(class)。如果您创建了 UserDict 的后代,则可能需要覆盖它。
如果您确实要覆盖 iteritems,您应该通过生成键值对来实现。
可怜的程序员:
def iteritems(self):
return iter([(x[0], x) for x in "alpha bravo charlie".split()])
关于python - 为我的自定义迭代器实现 iteritems 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4020905/
我有一个美国教育数据集的数据集:统一项目。我想知道 9 至 12 年级入学人数(列:GRADES_9_12_G)少于 5000 的行数 注册 9 至 12 年级的行数(列:GRADES_9_12_G)
我有一个字典update_fields,其中包含键/值对,其中值是另一个字典: {datetime.date(2016, 12, 2): {'t1030': 0, 't1045': 0, 't0645
我不太懂 Python,所以我希望这是一个简单的问题。我正在尝试遍历字典并为它们返回格式化的字符串。我可以毫无问题地打印出格式化的字符串,但我正试图将它变成一个函数,以便我可以运行测试。 例如 som
我正在尝试编写一个脚本,该脚本将写入 Google Docs 电子表格,当我运行它时,标题中出现错误。进一步来说: File "/home/pi/Desktop/templog.py", line 4
我想使用 python 进行大量查找和替换。 tot11.txt 是一个字符串(有 600000 个项目),我想从文件 1.txt 中替换这里的项目。 例如 tot11.txt 有: 'alba',
我有一个列表,其中一些项目应该被移动到一个单独的列表中(通过比较器函数)。这些元素是纯粹的命令。问题是我应该如何迭代这样的列表。 迭代最简单的时候,for element in mylist,然后不知
当我有这样的想法时,我正在从一个旧的字典创建一个新的字典,我只想在键的名称上附加一个字母: 这两个 dict 理解中哪个更有效(或者更 Pythonic?) {k: v for k, v in oth
以下程序的目标是学习 python 生成器和迭代器实现,以了解 Python 魔术方法。 我一直在执行 iteritems() 函数。另外,我想知道我是在朝着正确的方向前进,还是在理解 python
好吧,够了。我需要有关 iteritems() 和append() 过程的帮助... 这里我们有一些桶装啤酒和威士忌的时间序列价格数据...... Beer Whiskey Date
所以我有代码可以用其他字母/单词替换字符串中的某些字母/单词 c = {"u":"i", "c":"see", "me":"you"} for a,b in c.iteritems():
在所有地方使用 items() 代替 iteritems() 是否合法?为什么从 Python 3 中删除 iteritems()?似乎是一个了不起和有用的方法。背后的原因是什么? 编辑:为了澄清,我
这个问题在这里已经有了答案: Error: " 'dict' object has no attribute 'iteritems' " (6 个回答) 2年前关闭。 问题:运行以下代码时出现错误。我
这个问题已经有答案了: Why is the order in dictionaries and sets arbitrary? (5 个回答) 已关闭 9 年前。 我知道Python dicts是无
我试图在我的代码中使用多参数,然后出现了这个错误,我已经尝试了一切,但仍然无法纠正这个错误。请告诉我如何纠正这个错误。我的代码如下 class client_client(osv.osv):
我创建了一个数据框字典来存储我的数据。我需要对我尝试使用 iteritems() 遍历字典的每个数据帧做一些事情。但不知何故,我似乎无法对数据帧做任何事情。代码编译并没有抛出任何错误,它似乎什么也没做
通过支柱数据和神社模板进行问题迭代。我从工作的 salt/pillar 安装中获取了大部分模板,但现在无法在新环境中工作。 我在迭代的实现中尝试了几种不同的语法,但仍然遇到相同的错误。 服务器名称:
注意:我有 read this post and Alex Martelli's response ,但我并不真正/完全理解他的回答。这有点超出我目前的理解。我想帮助更好地理解它。 我了解到当您尝试以
当我在 .iloc 中使用 s.iteritems() 时,我看到以下警告: FutureWarning: iteritems is deprecated and will be removed in
我正在尝试使用 NetworkX 读取 Shapefile 并使用函数 write_shp()生成将包含节点和边的 Shapefile,但是当我尝试运行代码时,它给了我以下错误: Traceback
我正在尝试导入pandas-ml,但出现此导入错误。可能是什么问题? -----------------------------------------------------------------
我是一名优秀的程序员,十分优秀!