Python - 字典更新序列元素#0的长度为40; 2需要
问题描述:
我写了下面的脚本:Python - 字典更新序列元素#0的长度为40; 2需要
import os
i = 0
images = []
images_classes = {}
directory = '/home/Desktop/Images'
for image in os.listdir(directory):
images.append(image)
dir_path = os.path.dirname(os.path.realpath(image[i]))
dir_name = os.path.basename(dir_path)
images_classes.update({image, dir_name})
i = i + 1
print images_classes
当我尝试运行该程序,我得到以下错误:
Traceback (most recent call last):
File "test.py", line 12, in <module>
images_classes.update({image, dir_name})
ValueError: dictionary update sequence element #0 has length 40; 2 is required
基本上,我想加入新的元素字典在每次迭代。我该怎么做?
谢谢。
答
dict
的文档说,'update()接受另一个字典对象或键/值对的迭代(作为元组或其他长度为2的迭代)。如果指定了关键字参数,则字典随后会使用这些键/值对进行更新:d.update(red = 1,blue = 2)。'
你所传递的既不是。
你的意思是做'{image:dir_name}'? –
好奇......你为什么使用'images_classes.update'这是一张地图..你不应该使用'images_classes [image] = dir_name'?我认为.update通常用于合并大多数我认为的地图,这意味着它可能会在底下使用某种循环。'images_classes [image] = dir_name'可能会更有效,因为您将自己保存为一个额外的函数调用。 – reticentroot
@cᴏʟᴅsᴘᴇᴇᴅ我认为你的解决方案解决了这个问题。谢谢! – Simplicity