2014-07-11 46 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