2017-07-30 59 views
0

我的字典包含鍵(可能會或可能不會重複)和值(這是唯一的)。當我的鍵,值對不起作用時,我收到一個異常錯誤。當我收到一個異常時,我想轉到下一個匹配鍵,並嘗試它的值。如果它們中沒有一個能夠工作,則到達「finally」異常處理程序並繼續下一個鍵。嘗試字典中的鍵,直到一個作品 - python 2.7

下面是一些邏輯佈局,除了我現在的邏輯只嘗試另一個關鍵的可能性,當我想在達到「最終」之前耗盡所有關鍵選項。

for currentFile, originalFile in filepath_dictionary.items(): 
try: 
    relocateSource(currentFile, originalFile) 
except: 
    # (Some logic which tries the next key, value pair in which the key matches the current key 
finally: 
    print 'Could not relocate file: ' + currentFile 
+1

你的密鑰不重複。 – BoltzmannBrain

回答

0

如果你認爲你的鑰匙重複,但你的價值觀不這樣做,那麼你有你的數據結構錯誤的,因爲字典的鍵是唯一的。

有兩種可能的解決方案:

  • 調整你的字典結構,這樣獨特的文件名是鍵和重複文件名都值。
  • 爲字典的每個值設置一個文件名列表,以便將多個唯一的文件名與重複的文件名相關聯。換句話說,通過將重複文件名與幾個唯一的文件名關聯起來而不是隻重複一個,就可以表示重複的文件名。

以第二個選項爲您提供了這樣的事情:

for current_file, original_files in filepath_dictionary.items(): 
    for original_file in original_files: 
     try: 
      relocate_source(current_file, original_file)     
      break 
     except: 
      pass 
    else: 
     print 'Could not relocate file: ', current_file 
+0

是的!謝謝。很簡單,我對字典鍵的理解不正確!謝謝! – Nathan

0

在Python字典中,所有的鍵都是唯一的。

0

也許你應該將重複鍵的值保存在一個列表中,如果異常提出,只需在該列表中進行搜索。

dct = {key1: [val2_k1, val2_k1], key2: [val2_k2]}