首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在笨拙的数组中获取不同级别上具有公共名称的所有属性

,可以使用递归的方式进行遍历和比较。

首先,定义一个函数,输入参数为待遍历的数组和当前遍历的层级。函数的主要逻辑如下:

  1. 初始化一个空数组,用于存储具有公共名称的属性。
  2. 遍历数组中的每个元素。
  3. 判断当前元素是否为对象类型。
  4. 如果是对象类型,递归调用当前函数,传入当前元素的值作为数组参数,并将当前层级加一。
  5. 如果不是对象类型,将当前元素的值存入一个临时数组中。
  6. 在当前层级遍历结束后,将临时数组中的元素与上一层级的结果进行比较,筛选出公共名称的属性,并存入之前初始化的空数组中。
  7. 返回存储公共名称属性的数组。

以下是一个示例代码:

代码语言:txt
复制
def get_common_properties(arr, level=1):
    common_props = []
    temp_props = []
    
    for item in arr:
        if isinstance(item, dict):
            props = get_common_properties(list(item.values()), level + 1)
            if props:
                common_props.extend(props)
        else:
            temp_props.append(item)
    
    if level > 1:
        prev_props = get_common_properties(temp_props, level - 1)
        for prop in set(temp_props):
            if temp_props.count(prop) == level - 1 and prop in prev_props:
                common_props.append(prop)
    
    return common_props

该函数使用递归的方式遍历输入的数组。当遇到对象类型时,会递归调用函数,并传入当前对象的值作为数组参数,并将当前层级加一。在每一层级结束后,将临时数组中的元素与上一层级的结果进行比较,筛选出公共名称的属性,并存入空数组中。最终返回存储公共名称属性的数组。

这样,我们就可以使用以上函数来获取在笨拙的数组中不同级别上具有公共名称的所有属性。

请注意,以上代码是一个示例,实际使用时可能需要根据具体的数据结构和需求进行调整。在实际场景中,可以根据业务需求对函数进行扩展和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP解析Xml:SimpleXML类学习笔记

SimnnpleXML 1.介绍 SimpleXML 是 PHP 5 中的新特性。SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式。...SimpleXML 可把 XML 文档(或 XML 字符串)转换为对像; 元素被转换为 SimpleXMLElement 对象的单一属性。当同一级别上存在多个元素时,它们会被置于数组中。...属性通过使用关联数组进行访问,其中的索引对应属性名称。 元素内部的文本被转换为字符串。如果一个元素拥有多个文本节点,则按照它们被找到的顺序进行排列。...在处理高级 XML 时,比如命名空间,最好使用 Expat 解析器或 XML DOM。...getName() 返回 SimpleXML 元素引用的 XML 标签的名称。 3.迭代方法 current() 返回当前元素。 getChildren() 返回当前元素的子元素。

97150
  • ThreadPoolExcutor中的shutdownPerm运行时权限

    RuntimePermission 包含一个名称(也称为“目标名称”),但不包含操作列表;您可以有或没有指定的权限。 目标名称是运行时权限的名称(参见下面内容)。命名约定遵守分层属性命名约定。...下表列出了所有可能的 RuntimePermission 目标名称,并提供了权限所允许的操作的简要说明,还讨论了授予代码该权限的风险。...{库名} 动态链接指定的库 允许 applet 具有加载本机代码库的权限是危险的,因为 Java 安全架构并未设计成可以防止恶意行为,并且也无法在本机代码的级别上防止恶意行为。...此权限允许代码在特定包中定义类。这样做很危险,因为具有此权限的恶意代码可能在受信任的包中定义恶意类,比如 java.security 或 java.lang。...如果运行此代码的用户具有足够的读/写内部存储的 OS 特权,则此权限就允许用户读/写优先级内部存储。实际的内部存储可能位于传统的文件系统目录中或注册表中,这取决于平台 OS。

    53410

    为什么HashCode对于对象是如此的重要

    所以,我们只以Hashtable来说明:   在java中,存取数据的性能,一般来说当然是首推数组,但是在数据量稍大的容器选择中,Hashtable将有比数组性能更高的查询速度。...然后以Hashtable的长度取模,得到该对象在Hashtable中的索引。...所以对于数据量稍大时,Hashtable的查询比数组具有更高的性能。   ...对于一个对象,如果具有很多属性,把所有属性都参与散列,显然是一种笨拙的设计。因为对象的HashCode()方法被自动调用的很多,如果太多的对象参与了散列,那么需要的时间将会增加很多。...默认的实现是将对象内存地址转化为整数作为HashCode,这当然能保证每个对象具有不同的HasCode,但java语言并不能让程序员获取对象内存地址。

    43500

    Swift基础 访问控制

    枚举类型 枚举的单个案例会自动获得与它们所属枚举相同的访问级别。您无法为单个枚举案例指定不同的访问级别。 在下面的示例中,CompassPoint枚举具有明确的公共访问级别。...例如,您不能使用私有类型作为具有内部访问级别的枚举的原始值类型。 嵌套类型 嵌套类型的访问级别与其包含类型相同,除非包含类型是公共的。在公共类型中定义的嵌套类型具有内部的自动访问级别。...,只要对超类成员的调用是在允许的访问级别上下文中(即在与文件私有成员调用的超类相同的源文件中,或在与内部成员调用的超类相同的模块中): public class A { ​ fileprivate...然而,numberOfEdits属性的访问级别用private(set)修饰符标记,以指示属性的获取器仍然具有内部的默认访问级别,但该属性只能从作为TrackedString结构一部分的代码中设置。...这确保了协议的所有要求在任何采用该协议的类型上都可见。 注意 如果您定义了公共协议,则协议的要求在实现时需要这些要求的公共访问级别。

    15900

    C#3.0新增功能02 匿名类型

    匿名类型提供了一种方便的方法,可用来将一组只读属性封装到单个对象中,而无需首先显式定义一个类型。 类型名由编译器生成,并且不能在源代码级使用。 每个属性的类型由编译器推断。...声明初始化了一个只使用 Product 的两个属性的新类型。 这将导致在查询中返回较少数量的数据。...如果你没有在匿名类型中指定成员名称,编译器会为匿名类型成员指定与用于初始化这些成员的属性相同的名称。 必须为使用表达式初始化的属性提供名称,如下面的示例所示。...类型名称无法在变量声明中给出,因为只有编译器能访问匿名类型的基础名称。 有关 var 的详细信息,请参阅隐式类型本地变量。...虽然你的应用程序不能访问它,编译器还是提供了每一个匿名类型的名称。 从公共语言运行时的角度来看,匿名类型与任何其他引用类型没有什么不同。

    88620

    【源码】optimal-select 是如何获取到 HTML 元素指纹(CSS Selector)

    选择 optimal-select 的原因如下: CSS Selector 相比 xpath 具有更优的性能和可读性. optimal-select 支持选择多个元素 支持配置匹配优先级(priority...中,通过配置的规则的前后顺序,对优先级进行排序,利用的就是 JavaScript sort 的语法: // 根据优先级前后对属性进行进行排序 const sortedKeys = Object.keys...获取多个元素的 CSS Selector 其实在 select.js 中,有个 getQuerySelector 的方法,会根据传入的值进行不同的方法的调用,假如是传入的是多个 Node 的时候,就会自动调用...: getCommonAncestor 获取元素中公共的祖先,并使用 getSingleSelector 获取到公共祖先的唯一标识 getCommonSelectors 获取到该元素所有的公共 CSS...Selector 拼接返回 // 获取元素中公共的祖先 const ancestor = getCommonAncestor(elements, options) // 获取到公共祖先的唯一标识 const

    1.3K20

    Unity基础教程系列(新)(六)——Jobs(Animating a Fractal)

    现在,我们可以为分形内部的分形部件数组定义一个字段。 ? 我们可以将所有部件放置在一个大数组中,也可以为同一级别的所有部件提供自己的数组。后者可以让之后使用层次结构更容易。...同一级别的所有部分都具有相同的比例尺,不会改变。因此,我们在创建每个部件时只需要设置一次。在CreatePart中为其添加一个参数,并使用它来设置统一比例。 ? 根部分的比例为1。...这使得它与具有独立点的视图在根本上不同。这种分层依赖性使其不适合迁移到计算着色器。但是仍然可以通过单个过程命令绘制同一级别的所有部分,从而避免了成千上万个游戏对象的开销。...而不是根据世界位置进行着色,反照率就可以使用单一的颜色属性。 ? (分形着色器视图) DRP表面着色器也比等效的视图更简单。它需要一个不同的名称,包括正确的文件和反照率的新颜色属性。...IJobFor接口要求我们添加一个具有整数参数且不返回任何内容的Execute方法。该参数表示for循环的迭代器变量。接口强制执行的所有操作都必须是公共的,因此此方法必须是公共的。 ?

    3.6K31

    SpringBoot基础(二):配置文件详解

    ,新版优先级最低 不同配置文件中相同配置高优先级覆盖低优先级,不同配置文件中不同配置全部保留 2、不同位置优先级 classpath:application.yml(resources目录)【最低-程序员...,只要相同层级的元素左侧对齐即可 属性名与属性值之间使用冒号+空格作为分隔 #号 表示注释 可使用-代替驼峰,如Java中的lastName,在yml中lastName或last-name都可正确映射...,具有最高优先级,能够覆盖所有其他配置 # 以应用参数的方式 java -jar my.jar --server.port=7788 # 或以 JDK 参数的方式 java -Dserver.port...:application-环境名.yml 主配置文件中设置公共配置(全局) 环境分类配置文件中常用于设置冲突属性(局部) 主配置文件属性和环境分类配置文件属性冲突,后者优先级高 3、yml独立配置多文件版...,最后加载的环境属性生效 如下展示加载顺序,dev在第一位,相同属性会被覆盖

    15610

    CS Powershell Beacon分析

    列出PowerShell 会话中所有加载的程序集,然后找到在System.dll 中的Microsoft.Win32.UnsafeNativeMethods ([AppDomain]::CurrentDomain.GetAssemblies...AppDomain中的所有程序集: [AppDomain]::CurrentDomain.GetAssemblies() 然后通过管道输送到Where-Object获取System.dll 最后调用...在msdn中我们可以看到定义具有指定名称和访问权限的动态程序集的例子 public static System.Reflection.Emit.AssemblyBuilder DefineDynamicAssembly...传递给此调用的第一个值是一个逗号分割的属性列表 RTSpecialName:表示公共语言运行时检查名称编码。 HideBySig:表示方法按名称和签名隐藏;否则,仅通过名称。...Public:表示该方法可被此对象在其范围内的任何对象访问。 第二个参数是CallingConventions, 在本例中设置为Standard 指定由公共语言运行时确定的默认调用约定。

    1.8K20

    Java并发编程系列之三JUC概述

    此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的Condition对象。...此类具有的结构、属性和方法与 AbstractQueuedSynchronizer 完全相同,但所有与状态相关的参数和结果都定义为 long 而不是 int。...队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列获取操作则是从队列头部开始获得元素。...队列的尾部 是在队列中时间最短的元素。新元素插入到队列的尾部,并且队列获取操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。...实际上是借助硬件的相关指令来实现的,不会阻塞线程(或者说只是在硬件级别上阻塞了)。

    37530

    如何对第一个Vue.js组件进行单元测试 (下)

    首先,我们使用Jest的expect函数,它将我们想要测试的值作为参数。在我们的例子中,在父级上用findAll方法来获取具有活动类的所有元素。...这将返回一个WrapperArray,包含Wrappers数组的对象。        一个WrapperArray有两个属性:父级(包含的Wrappers)和长度(Wrappers的数量)。...在处理函数中,我们绑定的每个属性,并在元素上设置一个基于名称和值的数据属性。        我们将一个对象传递给我们的指令,因此我们可以从data-test-开始生成数据属性。...在处理函数中,我们反复绑定每个binding属性,并在元素上设置一个基于名称和值的数据属性。        现在我们需要注册我们的指令,以使用它。...因此,我们可以使用它来确定何时设置测试属性。        在浏览器中刷新您的应用并再次检查计数器:数据属性已消失。        现在我们可以对我们需要定位的所有元素使用v-test指令。

    3.3K00

    JavaSE笔记

    ,在迭代器期间修改列表,并获取列表中迭代器的当前位置 常用方法 E next():返回迭代中的下一个元素 boolean hasNext():如果迭代具有更多元素,则返回true E previous(...>[] getConstructors():返回所有公共构造方法对象的数组 Constructor所有公共成员变量对象的数组 Filed[] getDeclaredFileds():返回所有成员变量对象的数组 Filed getFiled(String name):返回单个公共成员变量对象...给obj对象的成员变量赋值为value 获取成员方法并使用 Class类中用于获取成员方法的方法 Method[] getMethods():返回所有公共成员方法对象的数组,包括继承的 Method[]...如果定义属性时,使用default关键字给属性默认初始化,则使用注解时,可以不进行属性的赋值 如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值 数组赋值时,值使用{

    1.3K21

    ASP.NET虚拟主机的重大安全隐患

    逻辑驱动器的个数在不同的服务器上是不定的,所以用不定长数组保存逻辑驱动器的名称,而且逻辑驱动器的名称也是我们下一步浏览目录和文件的基础,故我们采用了数据网格DataGrid来显示和处理它。   ...获取文件信息和内容的主要代码都在Page_Load方法中(代码在showfile.aspx.cs文件中): //接收传入的参数,确定需要操作的文件名称 strFile2Show = Request.QueryString...代码访问安全性允许根据代码的来源和代码的标识等属性将代码设置为不同级别的信任代码,同时还详细定义了不同级别的对代码的信任,从而可以详细的对代码设置各自的权限而不是将最大权限赋给所有的代码。...通过将属性(声明式语法)放到代码的程序级范围来为程序集请求权限。...在Microsoft .NET Framework Configuration中可以设置所有关于.NET Framework的属性。

    1.8K20

    Effective Java(第三版)——条目十五:使类和成员的可访问性最小化

    在仔细设计你的类的公共API之后,你的反应应该是让所有其他成员设计为私有的。 只有当同一个包中的其他类真的需要访问成员时,需要删除私有修饰符,从而使成员包成为包级私有的。...很重要的一点是,这些属性包含基本类型的值或对不可变对象的引用(条目 17)。 包含对可变对象的引用的属性具有非final属性的所有缺点。...虽然引用不能被修改,但引用的对象可以被修改,并会带来灾难性的结果。 请注意,非零长度的数组总是可变的,所以类具有公共静态final数组属性,或返回这样一个属性的访问器是错误的。...如果将模块的JAR文件放在应用程序的类路径而不是其模块路径中,那么模块中的包将恢复为非模块化行为:包的公共类的所有公共类和受保护成员都具有其普通的可访问性,不管包是否由模块导出[Reinhold,1.2...在仔细设计一个最小化的公共API之后,你应该防止任何散乱的类,接口或成员成为API的一部分。 除了作为常量的公共静态final属性之外,公共类不应该有公共属性。

    95240

    代码质量规则

    另外,out 和 ref 参数之间的差异没有得到广泛了解。 CA1024:在适用处使用属性 公共或受保护方法的名称以“Get”开头,没有采用任何参数或返回的值不是数组。 该方法可能很适于成为属性。...CA1401:P/Invokes 应为不可见 公共类型中的公共或受保护方法具有 System.Runtime.InteropServices.DllImportAttribute 属性(在 Visual...CA1418:使用有效的平台字符串 平台兼容性分析器需要有效的平台名称和版本。 CA1501:避免过度继承 类型在继承层次结构中的深度超过四级。 深度嵌套的类型层次结构可能很难遵循、理解和维护。...CA1721:属性名不应与 get 方法冲突 公共或受保护成员的名称以“Get”开头,且其余部分与公共或受保护属性的名称匹配。 “Get”方法和属性的名称应能够明确区分其功能上的差异。...如果派生方法中的参数名与基声明中的名称不同,可能会导致无法区分出该方法是基方法的重写还是该方法的新重载。 CA1801:检查未使用的参数 方法签名包含一个没有在方法体中使用的参数。

    2.2K30

    数据科学 IPython 笔记本 9.11 结构化数据:NumPy 的结构化数组

    , 68.0, 61.5] 但这有点笨拙。...这里没有任何东西告诉我们三个数组是相关的;如果我们可以使用单一结构来存储所有这些数据,那将更自然。NumPy 可以使用结构化数组处理这个问题,结构化数组是具有复合数据类型的数组。...结构化数组的便利之处在于,你现在可以通过索引或名称来引用值: # 获取所有名称 data['name'] ''' array(['Alice', 'Bob', 'Cathy', 'Doug'],...dtype='<U10') ''' # 获取数据的第一行 data[0] # ('Alice', 25, 55.0) # 获取最后一行的名称 data[-1]['name'] # 'Doug'...记录数组:略有不同的结构化数组 NumPy 还提供了np.recarray类,它与刚刚描述的结构化数组几乎相同,但有一个附加功能:字段可以作为属性而不是字典的键来访问。

    71610
    领券