当前位置: 首页 > 知识库问答 >
问题:

错误:"'判决'对象没有属性'迭代项'"

颜杰
2023-03-14

我试图使用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'

我使用的是Python 3.4,并通过pip安装安装了NetworkX。

在这个错误之前,它已经给了我另一个说“xrange不存在”或类似的东西,所以我查了一下,只是在nx_shp.py文件中将xrange更改为range,这似乎去解决它。

据我所知,它可能与Python版本有关(Python2 vs Python3)。

共有3个答案

查宜修
2023-03-14

我也有类似的问题(使用3.5),每天损失1/2,但这里有一个有效的方法——我退休了,只是在学习Python,这样我就可以帮助我的孙子(12岁)。

mydict2={'Atlanta':78,'Macon':85,'Savannah':72}
maxval=(max(mydict2.values()))
print(maxval)
mykey=[key for key,value in mydict2.items()if value==maxval][0]
print(mykey)
YEILDS; 
85
Macon
党权
2023-03-14

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

所以他们在Python2的后续版本中创建了dict.iteritems()。此返回的迭代器对象。没有复制整个字典,所以内存消耗较少。使用Python2的人被教导使用dict.iteritems()而不是

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 print
t1 = 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.04773592949
Time with d.iteritems(): 2.17707300186

在Python3中,他们想让它更高效,所以将dictionary.iteritems()移动到dict.items(),并删除了

您在Python3中使用了dict.iteritems(),因此失败了。尝试使用dict.items(),它具有与Python2dict.iteritems()相同的功能。这是一个从Python2Python3的小问题。

亢胤运
2023-03-14

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

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

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

删除了dict.iteritems()dict.iterkeys(),以及dict.itervalues()

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

 类似资料:
  • 我正在尝试构建一个Spark流媒体应用程序,该应用程序使用来自Kafka主题的消息,并使用Avro格式的消息,但我在使用合流消息反序列化程序时遇到了一些问题。 按照Spark Python Avro Kafka Deserialiser的说明,我让Kafka消费者正确地反序列化消息,但最终未能运行PythonStreamingDirectKafkaWordCount示例。 代码: 火花提交CLI

  • 当我执行代码时,我得到一个错误, 属性错误:“WebDriver”对象没有属性“find_element_by_xpath”

  • 问题内容: 我正在尝试从中文网站中抓取一些javascript生成的内容。我正在使用Selenium(和Python),因为我无法直接抓取javascript内容。 我得到以下错误: 实际上,我似乎无法在selenium.selenium类中调用任何命令。毫无疑问,我忽略了非常明显的事情。提前致谢。 问题答案: 您只需要。 执行以获取页面上的html元素(最大的元素)。(您可以通过多种方式执行此操

  • 在这个错误之前,它已经给了我另一个“xrange不存在”之类的信息,所以我查找了它,并将nx_shp.py文件中的更改为,这似乎解决了这个问题。 根据我所读到的内容,它可能与Python版本(Python2 vs Python3)有关。

  • 我遇到了这个错误,它不允许我在表单中保存信息。初始数据在表单中显示良好,但保存起来很困难。希望有人能帮忙,我真的被困了 追踪: 内部 41 中的文件“C:\程序文件\Python35\lib\site-packages\django\core\处理程序\exception.py”。响应 = get_response(请求) 文件"C:\Program Files\Python35\lib\site

  • 我有一个自动编码器,我尝试使用lambda在中间层中使用输入层的特定值,生成一个新的张量并发送到下一层,但它会产生以下错误: 回溯(最近一次呼叫最后一次): File"",第99行,在Model=Model(输入=[图像,wtm],输出=解码)中 文件“D:\software\Anaconda3\envs\py36\lib\site packages\keras\legacy\interfaces