参考以下两帖:
只不过本例中再向字典赋值的话要改一下了,通过dic.exists(key)来判断,第一次dic(key ...
kevinch 发表于 2011-3-28 13:47
学习下使用字典.
#include <array.au3>
#include <file.au3>
$aFile = FileOpenDialog("快速删除重复行",@ScriptDir&"\","文本文件 (*.txt;*.ini)", 1 + 4)
If @error Then
MsgBox(0,0,"文件未选择",3)
Exit
EndIf
$time = TimerInit()
local $file
_FileReadToArray($aFile,$file)
$o_Dic=objcreate("scripting.dictionary") ;创建字典项目
$out_Dic=objcreate("scripting.dictionary")
local $k=1,$out
for $i=1 to $file[0]
if Not $o_Dic.exists($file[$i]) then ;判断KEY是否存在
$o_Dic($file[$i]);增加新Key
$o_Dic.item($file[$i])=$k;定义Item
Else
$k=$o_Dic.item($file[$i])+1;得到重复次数
$o_Dic.item($file[$i])=$k;将重复次数修改为ITEM
$out&=$file[$i]&@CRLF;已经丢弃
EndIf
Next
$a_Arr=$o_Dic.keys
FileWrite(StringTrimRight($aFile,4)&"已整理."&StringRight($aFile,3),_ArrayToString($a_Arr,@CRLF)&@CRLF&TimerDiff($time));写入处理过的文件
FileWrite(StringTrimRight($aFile,4)&"已丢弃.txt",$out)
$b_Arr=$o_Dic.items
if UBound($a_Arr)=UBound($b_Arr) Then
local $out_array[UBound($a_Arr)][2]
for $i=0 to UBound($a_Arr)-1
$out_array[$i][0]=$a_Arr[$i]
$out_array[$i][1]=$b_Arr[$i]
Next
EndIf
_arraydisplay($out_array);返回重复次数的二维数组
|