2014-07-11 48 views
1

重複值從字典如何從詞典中刪除在VBScript

刪除重複值
Dim obj_ref 
Set obj_ref = CreateObject("scripting.dictionary") 
obj_ref.CompareMode = vbTextCompare 
obj_ref.Add "one","JAVA" 
obj_ref.Add "two",".NET" 
obj_ref.Add "three","C" 
obj_ref.Add "four","C++" 
obj_ref.Add "five","JAVA" 
obj_ref.Add "six","C" 
obj_ref.Add "sev","C++" 
+0

您沒有重複。您不能將重複項添加到字典中。編輯:哎呀,沒有意識到你的意思。就像@Bond所說的,只需添加鑰匙並捕捉失敗。 (可能是在錯誤恢復下一個) – Adam47

+0

@ Adam47你可以有重複的_values_,只是不重複的_keys_,這引發了問題......爲什麼不把它們創建爲_keys_,然後他們保證是唯一的。 – Bond

+0

JAVA,C,C++是重複的值,對吧? – knvchowdary

回答

2

密鑰必須是一個字典是獨一無二的。所以,如果你想創建一組獨特的值,將它們分配爲字典中的鍵。基本上,在你的方案中,只需交換密鑰名稱和值。

Dim d 
Set d = CreateObject("Scripting.Dictionary") 

If Not d.Exists("JAVA") Then d.Add "JAVA", "one" ' Will get added 
If Not d.Exists("NET") Then d.Add "NET", "two" ' Will get added 
If Not d.Exists("C") Then d.Add "C", "three" ' Will get added 
If Not d.Exists("C++") Then d.Add "C++", "four" ' Will get added 
If Not d.Exists("JAVA") Then d.Add "JAVA", "five" ' Will NOT get added. 
If Not d.Exists("C") Then d.Add "C", "six" ' Will NOT get added. 
If Not d.Exists("C++") Then d.Add "C++", "sev" ' Will NOT get added. 

現在,您可以測試以查看該密鑰是否已存在於字典中,並且只有在該字典不存在的情況下才添加該密鑰。不可能多次添加"JAVA"(或任何鍵)。

+0

Fine,Thanq,它看起來像只是靜態的,有沒有任何動態的可以安排的值? – knvchowdary

+0

對不起,您是什麼意思「動態排列值」? – Bond

+0

你做了什麼,那是你知道有多少人,我想要的是不知道價值。 – knvchowdary