2017-07-18 74 views
0

我寫了下面的腳本: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

回答

1

dict的文檔說,'update()接受另一個字典對象或鍵/值對的迭代(作爲元組或其他長度爲2的迭代)。如果指定了關鍵字參數,則字典隨後會使用這些鍵/值對進行更新:d.update(red = 1,blue = 2)。'

你所傳遞的既不是。

相關問題