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 

基本上,我想加入新的元素字典在每次迭代。我该怎么做?

谢谢。

+4

你的意思是做'{image:dir_name}'? –

+1

好奇......你为什么使用'images_classes.update'这是一张地图..你不应该使用'images_classes [image] = dir_name'?我认为.update通常用于合并大多数我认为的地图,这意味着它可能会在底下使用某种循环。'images_classes [image] = dir_name'可能会更有效,因为您将自己保存为一个额外的函数调用。 – reticentroot

+0

@cᴏʟᴅsᴘᴇᴇᴅ我认为你的解决方案解决了这个问题。谢谢! – Simplicity

dict的文档说,'update()接受另一个字典对象或键/值对的迭代(作为元组或其他长度为2的迭代)。如果指定了关键字参数,则字典随后会使用这些键/值对进行更新:d.update(red = 1,blue = 2)。'

你所传递的既不是。