首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么Python的iter()在映射上返回iterkeys()而不是iteritems()?

在Python中,iter()函数用于返回一个可迭代对象的迭代器。当iter()应用于映射(如字典)时,它会返回映射的键(iterkeys())而不是键值对(iteritems())。这是因为在Python 3中,iteritems()已被弃用,取而代之的是items()

在Python 2中,iter()函数返回的是iterkeys(),而在Python 3中,iter()函数返回的是items()。这是因为在Python 3中,iteritems()已被弃用,取而代之的是items()

以下是Python 2和Python 3中iter()的行为差异:

Python 2:

代码语言:python
代码运行次数:0
复制
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> iter(d)
<dict_iterkeys object at 0x7f952c0f77e0>

Python 3:

代码语言:python
代码运行次数:0
复制
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> iter(d)
<dict_keyiterator object at 0x7f952c0f77e0>

总结:Python的iter()在映射上返回iterkeys()而不是iteritems(),这是因为在Python 3中,iteritems()已被弃用,取而代之的是items()

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python快速学习第三天

(浅复制,因为值本身就是相同不是副本) 相比于直接把某个字典赋给一个引用变量区别如下: >>>x={'x':1,'y':2} >>>y=x >>>y {'y':2, 'x': 1} >>>x['...machines': ['foo', 'bar', 'baz']} >>>x {'username':'admin', 'machines': ['foo', 'bar', 'baz']}    修改了某个值,不是替换...name') True >>>d.has_key('age') False 6、   items和iteritems items方法将所有的字典项以列表方式返回,无序返回 >>>d={'title':'...), ('spam', 0), ('title', 'Python Web Site')]    iteritems方法作用大致相同,但是会返回一个迭代器对象不是列表,这个迭代器可以通过next0方法访问每个项...key方法将字典中键以列表形式返回iterkeys返回针对键迭代器 >>>ll=d.keys() >>>ll ['url','spam', 'title'] >>>it1=d.iterkeys

1K80

python学习笔记:字典

,那么字典就是无序集合,字典和列表主要差别在于:字典当中元素是通过键来存取不是通过偏移量存取。...python字典主要属性如下: 1、通过键不是偏移量来读取:       字典有时又被称作关联数组(associative array),或者是哈希表(hash)。通过键将一系列值联系起来。...Python2.2版本引入in 和not in 后,此方法几乎已废弃不用了,但仍提供一个 可工作接口。...dict.items() 返回一个包含字典中(键, 值)对元组列表 dict.keys() 返回一个包含字典中键列表 dict.values() 返回一个包含字典中所有值列表 dict.iter(...) 方法iteritems(), iterkeys(), itervalues()与它们对应非迭代方法一样,不同是它们返回一个迭代子,不是一个列表。

1.3K30

python 字典i

注意它们键/值对用冒号分割,各个对用逗号分割,所有这些都包括花括号中。另外,记住字典中键/值对是没有顺序。如果你想要一个特定顺序,那么你应该在使用前自己对它们排序。...但是项返回时并没有特殊顺序 >>> d={'a':'a','b':'lajdflasd'} >>> d.items() [('a', 'a'), ('b', 'lajdflasd')] iteritems...方法作用大致相同但是会返回一个迭代器不是列表 >>> it=d.iteritems() >>> it >...>> list(it) [('a', 'a'), ('b', 'lajdflasd')] 7,keys和iterkeys keys 方法将字典中键以列表形式返回iterkeys则是返回针对键迭代器...和itervalues values方法以列表形式返回字典中值(itervalues),与返回列表不同是,返回值得列表中可以包含重复元素 >>> d={} >>> d[1]=1 >>> d[2

91210

python 字典基本操作

in dic.items()   v for k, v in dic.iteritems()   v for k, v in zip(dic.iterkeys(),dic.itervalues()):... v 字典内置函数&方法,有了这些小方法可以让我们操作更简单,代码简洁 Python字典包含了以下内置函数: 1、cmp(dict1, dict2):比较两个字典元素。...Python字典包含了以下内置方法: 1、a.clear():删除字典内所有元素 2、a.copy():返回一个字典浅复制 3、a.fromkeys():创建一个新字典,以序列seq中元素做字典键,...val为字典所有键对应初始值 4、a.get(key, default=None):返回指定键值,如果值不在字典中返回default值 5、a.has_key(key):如果键字典dict里返回true...):和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default 9、a.update(dict2):把字典dict2键/值对更新到a里,不是将值覆盖,而是加入到里边 10、a.values

79510

小说python2和python3差异

python2退役 Django和Numpy相继发布对python2deadline后 Django不再支持python2 Numpy2019不再支持python2 Guido van Rossum...给出明确回复 python22020将光荣退役 可以怀念,但请拥抱python3吧 python2和python3差异 这里小说(粗浅,小范围)下当前我个人碰到和觉得常用一些东西 python2.../itervalues/iteritems python3 中变成 keys/values/items python3废除has_key 从CPython 3.6+开始默认情况下dict行为类似于...range 返回 list xrange 返回 Iterable对象 python3 只有 range 返回 Iterable对象 round python2 返回 浮点数 python3 返回...不是python2不可,也建议拥抱python3吧 python官方也给出了很多使用python3原因和从python2过度到python3有效建议 具体请看如下链接 http://python3statement.org

73840

flask第二十五篇——控制语句

server.close() print '发送成功' except smtplib.SMTPException: print '无法发送' 当我们发送给多人时,就是receivers是多人时,msg...sendmail第二个参数是receivers,这是一个list,这样才能使收件所有人都能收到邮件,如果sendmail传不是list,就会导致只有第一个收件人可以收到邮件,而后面的人收不到邮件。...和value for key, value in context.iteritems(): print key, value # 遍历字典key for key in context.iterkeys...,那么in后面就要写自点名.iteritems(),这样就会遍历出字典全部key和对应value;如果单独遍历key或者value,那么就要写字典名.iterkeys()或者字典名.itervalues...总结 ---- 所有的控制语句都是通过{% statement %}来使用,并且都有一个结束语句{% endstatement %},Python>, <, !

504120

python基本数据类型之字典

字典定义与特性 字典是Python语言中唯一映射类型。...键、值、键值对     1、dic.keys() 返回一个包含字典所有KEY列表;     2、dic.values() 返回一个包含字典所有value列表;     3、dic.items() ...返回一个包含所有(键,值)元祖列表;     4、dic.iteritems()、dic.iterkeys()、dic.itervalues() 与它们对应非迭代方法一样,不同是它们返回一个迭代子...,不是一个列表; 新增     1、dic['new_key'] = 'new_value';     2、dic.setdefault(key, None) ,如果字典中不存在Key键,由 dic[...修改     1、dic['key'] = 'new_value',如果key字典中存在,'new_value'将会替代原来value值;     2、dic.update(dic2) 将字典dic2

38730

Python中dict详解

中,返回,不在返回default Python代码   #如果keydict中,返回,不在返回default   print d.pop("name", "niccco")                ...在这个包含 5 个元素 list 中,li[:3] 返回前 3 个元素, li[3:] 返回后 2 个元素。...如果在 list 中没有找到值,Python 会引发一个异常。为它说明您程序会由于源代码问题崩溃,好于在后面当您使用无效索引引起崩溃。 要测试一个值是否 list 内,使用 in。...,但整个元素集是用小括号包围不是方括号。...使用 tuple 不是 list 如同拥有一个隐含 assert 语句,说明这一数据是常量。如果必须要改变这些值,则需要执行 tuple 到 list 转换 (需要使用一个特殊函数)。

85110

Python基本数据类型(三)

一、set函数说明 集合(set)是一个无序不重复元素序列,基本功能是进行成员关系测试和删除重复元素,可以使用大括号({})或者 set()函数创建集合; 注:创建一个空集合必须用set()不是{...},因为{ }是用来创建一个空字典; python中set提供函数如下: class set(object):     """     set() -> 空新集合对象;     set(iterable...__miss__方法值;         所以Counter作为dict子类实现了__missing__方法,缺失时候返回0;         这也就是为什么Counter类中,如果找不到key...,会返回0不是产生一个KeyError;         例如:         >>> import collections         >>> c = collections.Counter(...:'v4'})         >>> od.iterkeys()                  >>> nod =

1K20

Python3.x 常用新特性字符串编码格式:

print() 是函数,不是一个语句 raw_input()输入函数,改为 input() Python 3 对文本和二进制数据做了更为清晰区分。...Python3中 bytes 与 str 转换 1 .str 可以编码(encode)成 bytes 2 .bytes 可以解码(decode)成 str 字符串格式化输出方式:新增format...()方式 dict类型变化 之前 iterkeys(), itervalues(), iteritems(), 改为现在 keys(), values(), items() 字符串编码格式:...ASCII:早起计算机保存英文字符编码方式 GB2312:对ASCII中文扩展 GBK/GB18030:包括了GB2312所有内容,同时又增加了近20000个新汉字和符号 Unicode:包括了全球符合和编码...每个字符用3~4个字节表示,浪费空间 UTF-8:可变长编码方式,互联网上使用最广泛一种Unicode实现方式,根据语种决定字符长度,如一个汉字3个字节,一个字母1个字节,也是Linux环境下默认编码格式

46120

python2.7 迁移到 python3.6

python2.7 会在 2020 年停止维护, 很多第三方包也去掉对 python2.7 支持, 最近终于完成了内部代码向 python3 迁移, 整个过程挺繁琐, 记录一下....泄漏原因是一个有循环引用 class 内部重载了 __del__ 函数, python3.4 以前这种代码会内存泄漏....底层会检查是否安装了 simplejson, 如果有就用simplejson, 否则用标准库. dict iterkeys(), itervalues(), iteritems(), 这种 py3 里去除..., modernize 能自动修正 keys(), values(), items(), py3 下返回是 view object, https://docs.python.org/3/library...: dictionary changed size during iteration, 因为 .keys() 返回是 dict key view 对象, 遍历它实际遍历 dict 自己 (类似遍历

1.6K20

核心编程笔记之八-Py

这些客户端向服务器发送请求,服务器处理请求,请求被处理,服务器向客户端返回数据 8.6 for 语句 8.6.1 一般语法: for iter_var in iterable:    suite_to_repeat...,因为编写代码时候你可能要先把结构定下来,但你不希望它干扰其他已经完成代码,不需要它做任何事情地方,放一个pass将是一个很好主意 8.10 再谈else语句 Python可以while和for...8.11.2 为什么要迭代器? 8.11.3 如何迭代?...还引进了三个新内建字典方法来定义迭代:myDict.iterkeys() (通过keys迭代),myDict.itervalues() (通过values迭代),以及myDict.iteritems(...(obj)检查传递不是序列,如果是,根据索引从0一直迭代到结束 iter(fuc,sentinel)重复调用func,直到迭代器下个值等于sentinel 8.12 列表解析 语法: [expr

43610
领券