错误:“'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贡献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
。这是从一点点的迁移问题Python2
来Python3
。
添加回答
举报
0/150
提交
取消