问题标签 [duplicate-data]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1392 浏览

ms-access - 在 MS Access 中查找具有重复数据的行

我有一张大桌子,其中包括姓氏和出生日期等。我需要编写一个查询,它只返回姓氏和出生日期与表的另一行中的那些行相同的行。

这是一个表格,其中包含有关提出申请的人的信息。我想找出那些申请了不止一次的人。

我可以想到一种使用集合操作的方法,但 MS Access 似乎没有实现它们。

谢谢你的帮助。

0 投票
4 回答
616 浏览

perl - 使用 Perl 清理具有一个或多个重复的文件系统

我有两个磁盘,一个是临时备份磁盘,到处都是重复的,而我的笔记本电脑中的另一个磁盘也是一团糟。我需要备份唯一文件并删除重复文件。因此,我需要执行以下操作:

  • 查找所有非零大小的文件
  • 计算所有文件的MD5摘要
  • 查找具有重复文件名的文件
  • 将唯一文件与主副本和其他副本分开。

使用此脚本的输出,我将:

  • 备份唯一文件和主文件
  • 删除其他副本

唯一文件= 没有其他副本

主副本= 第一个实例,存在其他副本,可能匹配优先路径

其他副本= 非主副本

我创建了附加脚本,这对我来说似乎很有意义,但是:

文件总数!= 唯一文件 + 主副本 + 其他副本

我有两个问题:

  1. 我的逻辑错误在哪里?
  2. 有没有更有效的方法来做到这一点?

我选择了磁盘哈希,以便在处理大量文件列表时不会耗尽内存。

0 投票
3 回答
3546 浏览

algorithm - 重复数据删除算法

我想找到重复数据删除算法,主要是为了找到重复的文件。看起来第一步是识别具有相同时间戳、大小和文件名的文件。我可以对这些文件进行 MD5 校验和比较。除此之外,还可以比较文件的内容。我还应该注意什么?

0 投票
7 回答
3953 浏览

sql - 有没有标准的方法来复制数据库表中的一行?

我想复制一行,当然不是键,没有明确使用字段名称。
是否有 SQL 方式或者我必须通过代码枚举字段名称?

我不想明确使用字段名称,因为我想最小化代码和数据库依赖关系。

我将在 Ms Access 2003 中使用它。如果不存在标准方法,我会提到它。

0 投票
5 回答
1680 浏览

php - 从 PHP 中的关联数组数组中删除欺骗/排序

我有一组关联数组

两个问题

  1. 如何根据字段“Oil”删除重复项是否有一个 array_unique 可以提供一个作为自定义比较器的回调?

  2. 如何按自定义字段“火花塞”排序

0 投票
2 回答
2204 浏览

xml - 消除 XSLT 中重复的同级元素

我正在寻找显示同级别节点名称的列表,没有重复。

假设我有

我希望显示 c,d,e,f。我找到了几个解决类似问题的方法,从输出中消除了重复的兄弟姐妹,但我在消除重复的“表亲”时遇到了麻烦。

0 投票
2 回答
1696 浏览

sql - Tips for deduping a list based on priority column

I have a set of rows that contain duplicate entries because the data originates from multiples sources. I also have a separate reference table that indicates the priority of those data sources.

Does anyone have good tips for the most effective t-SQL to deduplicate this list?

Basically I have:

I have been placing this into a temp table and then deleting in an odd way that I suppose could be more efficient.

Table A has the same columns for the two sources, but the data can differ - so they may have different prices. The challenge is that I must take the price (and all other info) from the row that comes from the source with the highest priority. To complicate matters, I do not have data for every item from ALL sources.

So, item 1 may have data from source A and B, while item 2 may only have it from source B and C. Thus, the deletion needs to happen on a per-unique item basis.

0 投票
2 回答
262 浏览

arrays - 计算数据库中的重复条目

我想计算一个邮政编码输入数据库的次数。我不确定我是否使用了正确的功能。此外,最终我需要将邮政编码按输入数据库的年份分开。我知道如何分开岁月。我真正需要帮助的是计算重复条目。这是我的代码。


答案:这是我的有效代码。

0 投票
2 回答
240 浏览

perl - QIF 文件中的重复项?

有没有人有删除 QIF 文件中重复交易(相同日期、金额、账单等)的好方法?我查看了 PERL 的 Finance:QIF,但它似乎具有删除记录功能。

或者,有人有一个好的 QIF --> CSV 转换器吗?

虽然我正在研究 PERL 解决方案,但我对其他想法持开放态度。

0 投票
11 回答
27573 浏览

c++ - 在集合中查找重复元素并将它们分组的快速算法是什么?

假设您有一组元素,您如何挑选出重复的元素并将它们放入每个组中以最少的比较?最好用 C++,但算法比语言更重要。例如给定 {E1,E2,E3,E4,E4,E2,E6,E4,E3},我想提取 {E2,E2}, {E3,E3}, {E4,E4,E4}。你会选择什么数据结构和算法?还请包括设置数据结构的成本,例如,如果它是像 std::multimap 这样的预排序的

更新

按照建议使事情更清楚。有一个限制:元素必须自己比较才能确定它们是重复的。

所以哈希不适用,因为实际上它们将比较从重元素(例如数据块)转移到轻元素(整数),并减少了一些比较,但没有取消它们,最后,我们回到我们最初的问题是什么时候在一个碰撞桶内。

假设您有一堆潜在的 GB 重复文件,它们具有人类所知道的每种哈希算法相同的哈希值。现在您将发现真正的重复项。

不,这不可能是现实生活中的问题(即使 MD5 也足以为现实生活中的文件生成唯一的哈希)。但是只是假装这样我们就可以专注于找到涉及最少比较的数据结构+算法


我正在做的是

  1. 表示成一个 STL std::list 数据结构(其中 1)它的元素删除比向量便宜 2)它的插入更便宜,不需要排序。)

  2. 弹出一个元素并将其与其余元素进行比较,如果发现重复,则将其从列表中拉出。一旦到达列表的末尾,就会发现一组重复项,如果有的话。

  3. 重复上述 2 个步骤,直到列表为空。

在最好的情况下它需要 N-1,但是 (N-1)!在最坏的情况下。

有什么更好的选择?


我的代码使用上面解释的方法:


感谢下面的回答,但是他们似乎被我的例子误导了,它是关于整数的。事实上,元素是类型不可知的(不一定是整数、字符串或任何其他 POD),并且相等的谓词是自定义的,即比较可能非常繁重

所以也许我的问题应该是:使用哪种数据结构+算法涉及更少的比较。

根据我的测试,使用像 multiset 这样的预排序容器,multimap 并不好,因为

  1. 插入时的排序已经进行了比较,
  2. 以下相邻发现再次进行比较,
  3. 这些数据结构更喜欢小于操作而不是相等操作,它们执行 2 个小于(a

我看不出它如何保存比较。


下面的一些答案忽略了另一件事,我需要将重复的组彼此区分开来,而不仅仅是将它们保存在容器中。


结论

经过所有讨论,似乎有3种方法

  1. 我原来的天真方法如上所述
  2. 从线性容器开始std::vector,对其进行排序,然后找到相等的范围
  3. 从关联容器开始,std::map<Type, vector<duplicates>>如 Charles Bailey 所建议的,在关联容器的设置过程中挑选出重复项。

我编写了一个示例来测试下面发布的所有方法。

重复的数量和分布的时间可能会影响最佳选择。

  • 方法 1 最好是在前面重重摔倒,最后最差。排序不会改变分布,而是字节序。
  • 方法 3 的性能最平均
  • 方法2永远不是最好的选择

感谢所有参与讨论的人。

一个输出包含以下代码中的 20 个示例项目。

用 [ 20 10 6 5 4 3 2 2 2 2 1 1 1 1 1 1 1 1 1 1 ] 进行测试

和 [ 1 1 1 1 1 1 1 1 1 1 2 2 2 2 3 4 5 6 10 20 ]

使用 std::vector -> 排序() -> 相邻查找():

比较:['<' = 139,'==' = 23]

比较:['<' = 38, '==' = 23]

使用 std::list -> sort() -> 收缩列表:

比较:['<' = 50, '==' = 43]

比较:['<' = 52, '==' = 43]

使用 std::list -> 缩小列表:

比较:['<' = 0, '==' = 121]

比较:['<' = 0, '==' = 43]

使用 std::vector -> std::map>:

比较:[ '<' = 79, '==' = 0 ]

比较:['<' = 53, '==' = 0]

使用 std::vector -> std::multiset ->相邻_find():

比较:['<' = 79,'==' = 7]

比较:['<' = 53, '==' = 7]

代码