首页
学习
活动
专区
工具
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() 返回当前元素子元素。

95250
  • ThreadPoolExcutorshutdownPerm运行时权限

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

    51910

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

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

    42100

    Swift基础 访问控制

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

    14400

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

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

    86920

    【源码】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.5K31

    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

    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.7K50

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

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

    3.3K00

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

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

    33230

    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属性之外,公共类不应该有公共属性

    93140

    数据科学 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类,它与刚刚描述结构化数组几乎相同,但有一个附加功能:字段可以作为属性而不是字典键来访问。

    70110

    Java编程基础阶段笔记 day 07 面向对象编程(上)

    ②变量都有作用域 ③变量都是先声明后使用 成员变量和局部变量 不同点: ①局部变量:方法里,方法形参,构造器,构造器形参,代码块 ②成员变量: 类中方法等结构外 权限修饰符: ①局部变量:...变量名 说明:                  ①可变形参底层就是一个数组                  ②可变形参方法,和可变形参相同类型数组方法不构成重载。                  ...创建对象以后,就可以通过对象名.属性名这种方式对属性直接进行操作。这种操作对于属性只有类型和范围限制。但是实际开发我们会有更多其它限制条件。而这些限制条件又不能在属性声明处加以限制。...我们采取取如下方式 ①使用权限修饰符对属性进行权限限制,那么外部就不能随意再调用类属性 ②提供公共方法,方法可以加以限制其它条件。然后可以通过该方法给属性赋值和获取属性值。...四种访问权限修饰符 构造方法(构造器) 构造器特征 它具有与类相同名称 它不声明返回值类型。

    54200
    领券