为了账号安全,请及时绑定邮箱和手机立即绑定

错误:“'dict'对象没有属性'iteritems'”

错误:“'dict'对象没有属性'iteritems'”

ABOUTYOU 2019-08-12 09:46:15
错误:“'dict'对象没有属性'iteritems'”我正在尝试使用NetworkX读取Shapefile并使用该函数write_shp()生成将包含节点和边的Shapefile,但是当我尝试运行代码时,它会给我以下错误:Traceback (most recent call last):   File"C:/Users/Felipe/PycharmProjects/untitled/asdf.py", line 4, in<module>     nx.write_shp(redVial, "shapefiles")   File "C:\Python34\lib\site-packages\networkx\readwrite\nx_shp.py", line192, in write_shp    for key, data in e[2].iteritems(): AttributeError: 'dict' object has no attribute 'iteritems'我正在使用Python 3.4并通过pip install安装NetworkX。这个错误之前,它已经给了我另外一个说:“x范围不存在”或类似的东西,所以我看着它,只是改变xrange以range在nx_shp.py文件,这似乎解决它。根据我的阅读,它可能与Python版本(Python2与Python3)有关。
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

正如你在python3中,使用dict.items()而不是dict.iteritems()

iteritems() 已在python3中删除,因此您不能再使用此方法。

看看Python 3.0 Wiki 内置更改部分,其中说明:

删除dict.iteritems()dict.iterkeys()dict.itervalues()

相反:使用dict.items()dict.keys()dict.values() 分别。


查看完整回答
反对 回复 2019-08-12
?
守着一只汪

TA贡献1872条经验 获得超3个赞

Python2中,我们有.items().iteritems()词典。dict.items()返回字典中的元组列表[(k1,v1),(k2,v2),...]。它复制了字典中的所有元组并创建了新列表。如果字典非常大,那么会有很大的内存影响。

所以他们dict.iteritems()在Python2的更高版本中创建。这返回了迭代器对象。整个字典没有复制,所以内存消耗较少。使用人Python2被教导要使用dict.iteritems()的,而不是.items()如下面的代码解释了效率。

import timeit

d = {i:i*2 for i in xrange(10000000)}  start = timeit.default_timer()for key,value in d.items():
    tmp = key + value #do something like printt1 = timeit.default_timer() - start

start = timeit.default_timer()for key,value in d.iteritems():
    tmp = key + value
t2 = timeit.default_timer() - start

输出:

Time with d.items(): 9.04773592949Time with d.iteritems(): 2.17707300186

Python3,他们想使之更有效率,所以感动dictionary.iteritems()dict.items(),并删除.iteritems(),因为它不再需要。

你已经使用过dict.iteritems()Python3所以失败了。尝试使用dict.items()具有相同功能dict.iteritems()Python2。这是从一点点的迁移问题Python2Python3


查看完整回答
反对 回复 2019-08-12
  • 3 回答
  • 0 关注
  • 1487 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信