找回密码  加入

AUTOIT CN

搜索
查看: 121|回复: 4

[效率算法] 数组合并重复项

[复制链接]
发表于 2019-5-14 16:29:08 | 显示全部楼层 |阅读模式
几千条数据,按第一列合并重复。太漫长了,可有更好的效率写法?听说用SQLITE处理会更专业,有没有适用的例子参考下
for $i=UBound($jtb)-1 to 1 step -1
        for $j=$i-1 to 1 step -1
                if $jtb[$j][0]=$jtb[$i][0] Then
$m=3
                While $m<34
                        if $jtb[$i][$m]<>"" or $jtb[$j][$m]<>"" then
                         $jtb[$i][$m]=$jtb[$j][$m]+$jtb[$i][$m]
                        EndIf
                        $m+=1
                WEnd
                ;ConsoleWrite($jtb[$j][0]&@cr)
                _ArrayDelete($jtb,$j)
                ExitLoop
        EndIf
                Next
        Next
_ArrayDisplay($jtb)
发表于 2019-5-14 20:03:33 | 显示全部楼层
  1. #include <Array.au3>
  2. $New_jtb = _ArrayUnique($jtb)
  3. _ArrayDisplay($New_jtb)
复制代码
 楼主| 发表于 2019-5-15 08:24:00 | 显示全部楼层

我不仅要删除啊,还需要把列后面数据的合并起来
 楼主| 发表于 2019-5-15 14:41:37 | 显示全部楼层
  1. #include <Array.au3>
  2. #include <SQLite.au3>

  3. Dim $test[6] = [1, 1, 4, 2, 2, 4]
  4. _ArrayDisplay($test, "Original data")
  5. _SQLite_Startup()
  6. _SQLite_Open()
  7. _SQLite_Exec(-1, "Create Temp Table tempTable (Temp);")
  8. For $o = 0 to Ubound($test) - 1
  9.        _SQLite_Exec(-1, "Insert into tempTable(Temp) values('" & $test[$o] & "');")
  10. Next
  11. Local $row, $col
  12. _SQLite_GetTable2D(-1, "Select distinct Temp From tempTable;", $test, $row, $col)
  13. _SQLite_Exec(-1, "Drop Table tempTable;")
  14. _SQLite_Close()
  15. _SQLite_Shutdown()
  16. _ArrayDelete($test, 0)
  17. _ArrayDisplay($test, "Result")
复制代码
看了前面有个用SQLITE的列子,思路挺好,多维数组好像不行,对SQLITE熟悉的可能改进下
发表于 2019-5-18 13:58:39 | 显示全部楼层
搜索“字典”
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|小黑屋|手机版|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2019-5-27 10:30 , Processed in 0.078125 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表