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

错误:“'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范围不存在”或类似的东西,所以我看着它,只是改变xrangerange在nx_shp.py文件,这似乎解决它。

根据我的阅读,它可能与Python版本(Python2与Python3)有关。


ABOUTYOU
浏览 1488回答 3
3回答

交互式爱情

正如你在python3中,使用dict.items()而不是dict.iteritems()iteritems()&nbsp;已在python3中删除,因此您不能再使用此方法。看看Python 3.0 Wiki&nbsp;内置更改部分,其中说明:删除dict.iteritems(),dict.iterkeys()和dict.itervalues()。相反:使用dict.items(),dict.keys()和dict.values()&nbsp;分别。

守着一只汪

在Python2中,我们有.items()和.iteritems()词典。dict.items()返回字典中的元组列表[(k1,v1),(k2,v2),...]。它复制了字典中的所有元组并创建了新列表。如果字典非常大,那么会有很大的内存影响。所以他们dict.iteritems()在Python2的更高版本中创建。这返回了迭代器对象。整个字典没有复制,所以内存消耗较少。使用人Python2被教导要使用dict.iteritems()的,而不是.items()如下面的代码解释了效率。import&nbsp;timeit d&nbsp;=&nbsp;{i:i*2&nbsp;for&nbsp;i&nbsp;in&nbsp;xrange(10000000)}&nbsp;&nbsp;start&nbsp;=&nbsp;timeit.default_timer()for&nbsp;key,value&nbsp;in&nbsp;d.items(): &nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;=&nbsp;key&nbsp;+&nbsp;value&nbsp;#do&nbsp;something&nbsp;like&nbsp;printt1&nbsp;=&nbsp;timeit.default_timer()&nbsp;-&nbsp;start start&nbsp;=&nbsp;timeit.default_timer()for&nbsp;key,value&nbsp;in&nbsp;d.iteritems(): &nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;=&nbsp;key&nbsp;+&nbsp;value t2&nbsp;=&nbsp;timeit.default_timer()&nbsp;-&nbsp;start输出:Time&nbsp;with&nbsp;d.items():&nbsp;9.04773592949Time&nbsp;with&nbsp;d.iteritems():&nbsp;2.17707300186在Python3,他们想使之更有效率,所以感动dictionary.iteritems()到dict.items(),并删除.iteritems(),因为它不再需要。你已经使用过dict.iteritems(),Python3所以失败了。尝试使用dict.items()具有相同功能dict.iteritems()的Python2。这是从一点点的迁移问题Python2来Python3。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python