热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Perl-如果已存在于另一个数组中,则从数组中删除该元素

如何解决《Perl-如果已存在于另一个数组中,则从数组中删除该元素》经验,为你挑选了1个好方法。

我有一个关于perl嵌入函数的问题.在您看来,"map"函数可以帮助我弹出一个数组中的所有元素,如果它已经存在于另一个数组中?

这些是数组:

名为OLDER_EVENTS的数组:

my @older_events = (
    surname => [
        qw(
            red
            brown
            simpson
            donald         
        )
    ],
    date => [
        qw(
            2018/02/14
            2018/03/09
            2018/05/01
            2018/08/02
        )
    ],
    time => [
        qw(
            01:00:52
            01:06:41
            03:24:31
            19:14:31            
        )
    ]
);

ARRAY命名新元素:

my @new_events = (
    surname => [
        qw(
            simpson
            donald         
            blanco
            ernald
        )
    ],
    date => [
        qw(
            2018/03/09
            2018/08/02
            2018/08/01
            2018/08/14
        )
    ],
    time => [
        qw(
            03:24:31
            19:14:31            
            00:03:16
            09:21:45
        )
    ]
);

在新事件中,最后两个条目是新的,因此,我会从@new_events中弹出元素1和2,因为它已经存在于@older_events中

我怎么能用智能解决方案呢?

我是否要使用第三个数组,或者,我可以从@older_events中弹出它吗?

感谢您的关注



1> ikegami..:

首先,您使用数组作为键值对.这没用.

my %older_events = @older_events;
my %newer_events = @newer_events;

其次,您希望对记录执行操作,但您的数据不会组织成记录.

my @older_events =
   map {
      +{
         surname => $older_events->{ surname }[$_],
         date    => $older_events->{ date    }[$_],
         time    => $older_events->{ time    }[$_],
      }
   }
      0..$#{ $older_events->{surname} };

my @newer_events =
   map {
      +{
         surname => $newer_events->{ surname }[$_],
         date    => $newer_events->{ date    }[$_],
         time    => $newer_events->{ time    }[$_],
      }
   }
      0..$#{ $newer_events->{surname} };

第三,我们需要一种快速查找事件是否存在的方法@older_events.

sub key { join "\0", @{ $_[0] }{qw( surname date time )} }

my %older_event_by_key =
   map { key($_) => $_ }
      @older_events;

最后,我们可以grep

@newer_events =
   grep { !$old_event_by_key{ key($_) } }
      @newer_events;


推荐阅读
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 这篇文章主要介绍了Python拼接字符串的七种方式,包括使用%、format()、join()、f-string等方法。每种方法都有其特点和限制,通过本文的介绍可以帮助读者更好地理解和运用字符串拼接的技巧。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 本文整理了Java中org.apache.hadoop.hive.ql.plan.ExprNodeColumnDesc.getTypeInfo()方法的一些代码示例,展 ... [详细]
  • 本文总结和分析了JDK核心源码(2)中lang包下的基础知识,包括常用的对象类型包和异常类型包。在对象类型包中,介绍了Object类、String类、StringBuilder类、StringBuffer类和基本元素的包装类。在异常类型包中,介绍了Throwable类、Error类型和Exception类型。这些基础知识对于理解和使用JDK核心源码具有重要意义。 ... [详细]
  • R语言拼接字符串_paste的用法说明
    这篇文章主要介绍了R语言拼接字符串_paste的用法说明,具有很好的参考价值,希望对大家有所帮助。一 ... [详细]
author-avatar
最爱7色的彩虹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有