我正在尝试使用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", line
192, in write_shp
for key, data in e[2].iteritems(): AttributeError: 'dict' object has no attribute 'iteritems'
Run Code Online (Sandbox Code Playgroud)
我正在使用Python 3.4并通过pip install安装NetworkX.
这个错误之前,它已经给了我另外一个说:"x范围不存在"或类似的东西,所以我看着它,只是改变xrange以range在nx_shp.py文件,这似乎解决它.
根据我的阅读,它可能与Python版本(Python2与Python3)有关.
是否合法使用items()而不是iteritems()在所有地方使用?为什么iteritems()从Python 3 中删除?看起来像一个了不起的有用的方法.背后的原因是什么?
编辑:为了澄清,我想知道以类似生成器的方式迭代字典的正确习惯用法(一次一个项目,而不是全部到内存中)以与Python 2和Python 3兼容的方式进行迭代?
我__init__()在一些具有许多参数(最多20个)的SQLAlchemy ORM类中使用这样的东西.
def __init__(self, **kwargs):
for k, v in kwargs.iteritems():
setattr(self, k, v)
Run Code Online (Sandbox Code Playgroud)
设置这样的属性是"pythonic"吗?