CN111209741B - 表格数据字典的处理方法及装置 - Google Patents
表格数据字典的处理方法及装置 Download PDFInfo
- Publication number
- CN111209741B CN111209741B CN202010047487.4A CN202010047487A CN111209741B CN 111209741 B CN111209741 B CN 111209741B CN 202010047487 A CN202010047487 A CN 202010047487A CN 111209741 B CN111209741 B CN 111209741B
- Authority
- CN
- China
- Prior art keywords
- dictionary
- data
- value
- table data
- metadata
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明公开了一种表格数据字典的处理方法及装置。其中,该方法包括:基于当前输入的表格数据字典构建压缩数据结构;在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典。本发明解决了现有技术中的表格数据字典占用资源较多,影响游戏进程的技术问题。
Description
技术领域
本发明涉及数据处理领域,具体而言,涉及一种表格数据字典的处理方法及装置。
背景技术
目前市面上有非常多的游戏项目采用python语言作为主要开发语言,这些项目通常会将游戏策划的表格数据导出为python字典对象被游戏所使用,表格数据里的每一项数据也是一个python字典对象。这种结构满足了游戏对表格数据的使用的需求,并且使用字典类型对于python程序员使用更加友好。
但是,python字典类型对内存不友好,原因与其底层实现有关。对于python2.7版本的cpython解析器,其字典对象的底层结构包含名为ma_smalltable的大小固定为8的桶数组,当字典的大小小于8的时候,字典的桶数据会被存储到ma_smalltable,当字典大小大于8,ma_smalltable不再存储桶数据,转而动态申请更大的内存块来存储这些桶数据,当然,ma_smalltable也会继续占用着内存,在64位机器上,一个空的字典对象占用248字节;为了减少hash冲突,python也会动态扩容桶数组的大小,当字典的负载因子超过2/3时则会进行扩容。并且,当表格数据变得越多,则表格数据占用的内存也会变多,甚至成为游戏进程的内存瓶颈。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种表格数据字典的处理方法及装置,以至少解决现有技术中的表格数据字典占用资源较多,影响游戏进程的技术问题。
根据本发明实施例的一个方面,提供了一种表格数据字典的处理方法,包括:基于当前输入的表格数据字典构建压缩数据结构;在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典。
根据本发明实施例的另一方面,还提供了一种表格数据字典的处理装置,包括:构建模块,用于基于当前输入的表格数据字典构建压缩数据结构;处理模块,用于在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典。
根据本发明实施例的另一方面,还提供了一种存储介质,上述存储介质包括存储的程序,其中,在上述程序运行时控制上述存储介质所在设备执行任意一项上述的表格数据字典的处理方法。
根据本发明实施例的另一方面,还提供了一种处理器,上述处理器用于运行程序,其中,上述程序运行时执行任意一项上述的表格数据字典的处理方法。
在本发明实施例中,采用自定义字典类型的方式,通过基于当前输入的表格数据字典构建压缩数据结构;在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典,达到了以更节省内存资源的数据结构来存储表格数据字典,并且提供与表格数据字典相同的字典接口和语法糖满足表格数据使用需求的目的,从而实现了有效节省表格数据字典占用资源的技术效果,进而解决了现有技术中的表格数据字典占用资源较多,影响游戏进程的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种表格数据字典的处理方法的流程图;
图2是根据本发明实施例的一种可选的表格数据字典的处理方法的流程图;
图3是根据本发明实施例的一种可选的表格数据字典的处理方法的流程图;
图4是根据本发明实施例的一种表格数据字典的处理装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,为方便理解本发明实施例,下面将对本发明中所涉及的部分术语或名词进行解释说明:
id:是指表格数据中每一项数据的唯一标识。
cpython:用C语言实现的Python解释器,是最广泛使用的Python解释器。
ma_smalltable:字典类型C结构体的属性之一,当字典大小小于8,ma_smalltable会存储桶数据。
table_dict:一个字典对象,存储着表格的数据,作为算法的输入对象。
table_list:由table_dict里面的每一项数据构成的列表对象。
cluster_list:由算法得到的列表对象,里面存储着算法计算得到的集合对象。
data:算法需要遍历表格的每一项数据,data作为遍历过程中每一项数据的中间名字。
member:由一项数据构造得到的成员对象。
cluster:由一项数据构造得到的集合对象。
keys,values:keys是某项数据的部分或所有键的元组,values是键对应的值元组,keys和values通常一起出现,通过元组下标对应。
实施例1
根据本发明实施例,提供了一种表格数据字典的处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种表格数据字典的处理方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,基于当前输入的表格数据字典构建压缩数据结构;
步骤S104,在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典。
在本发明实施例中,采用自定义字典类型的方式,通过基于当前输入的表格数据字典构建压缩数据结构;在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典,达到了以更节省内存资源的数据结构来存储表格数据字典,并且提供与表格数据字典相同的字典接口和语法糖满足表格数据使用需求的目的,从而实现了有效节省表格数据字典占用资源的技术效果,进而解决了现有技术中的表格数据字典占用资源较多,影响游戏进程的技术问题。
为了解决现有技术中存在的技术问题,本申请实施例提供一种更节省内存的压缩数据结构,通过基于当前输入的表格数据字典构建压缩数据结构,例如,可以将表格数据的每一项数据由原本的python字典,转变为python元组字典,并为该python元组提供与python字典相同的字典接口和语法糖,并在当通过字典接口或语法糖访问表格数据的过程中,将上述python元组字典还原为上述python字典返回给调用者。
通过上述步骤,由于python元组字典比python字典要更加节省内存资源,并且子数据只存储与父数据不同的数据,所以会有效减少子数据占用的内存资源,进而可以有效降低表格数据占用的内存资源,并且自定义的python元组字典保留了python字典的字典接口与语法糖,便于调用者访问表格数据。
在一种可选的实施例中,图2是根据本发明实施例的一种可选的表格数据字典的处理方法的流程图,如图2所示,基于上述表格数据字典构建上述压缩数据结构包括:
步骤S202,将上述表格数据字典转化为表格数据列表;
步骤S204,构建上述表格数据列表中不同数据元素之间的父子关系;
步骤S206,根据上述父子关系构建上述压缩数据结构。
可选的,表格数据列表中的每一项数据元素均是一个python字典对象,并且有唯一的标识id。
为了获得更好的压缩效果,可以将上述表格数据字典转化为表格数据列表,并为表格数据列表中的不同数据元素添加一层父子关系,根据上述父子关系构建上述压缩数据结构。
可选的,父数据中用于存储自己原本的数据,子数据中用于存储父数据的数据id,以及与该父数据不同的数据。
需要说明的是,为了获得更好的压缩效果,基于上述表格数据字典构建上述压缩数据结构的过程需要抽象3个概念:成员,集合和差异值,父子关系。
其中,一个数据可以构建一个成员或集合。当一个集合由某个数据构建,那么这个数据称为这个集合的中心数据。集合可以包含多个成员,成员只会属于一个集合,并且可能拥有一个父成员对象;差异值是指不同数据之间的不同程度,具体量化为数据之间不同键值对的个数,差异值越大表明数据之间越是不同,若父数据和子数据之间的差异值越小,则表明内存压缩效果越好。
通过本申请上述实施例,使用压缩数据结构(例如,元组类型)代替表格数据字典(字典类型)来存储表格数据可以节省内存资源;通过为表格数据列表中不同数据元素之间添加父子关系,父数据存储原本的数据,子数据存储与父数据不同的数据,以及该父数据的标识id,进而可以达到节省内存资源的目的,使用集合、成员和差异值的概念来生成父子关系,还可以存储更少的数据来提高表格数据的压缩效果。
需要说明的是,表格数据的内存压缩率与不同数据元素之间的相似度正相关。
在一种可选的实施例中,构建上述表格数据列表中不同数据元素之间的父子关系包括:
生成步骤,分别为上述表格数据列表中每个数据元素构建集合,生成集合列表;
第一计算步骤,计算当前数据元素与上述集合列表中每个集合的中心数据之间的差异值,将最小差异值的集合确定为备选集合以及将上述最小差异值确定为第一差异值;
第一判断步骤,基于上述当前数据元素的键值对数量与上述第一差异值的比较结果,判断上述当前数据元素是否能够成为上述备选集合的成员;如果是,则继续执行第二判断步骤,如果否,则基于上述当前数据元素构建新的集合,并将上述新的集合加入至上述集合列表;
第二判断步骤,判断上述备选集合是否存在第一层成员;如果否,则基于上述备选集合和上述当前数据元素构建第一父成员并将上述第一父成员加入至第一层成员列表,如果是,则计算上述当前数据元素与上述第一层成员之间的第二差异值,并将第二差异值最小的成员确定为上述当前数据元素的第二父成员;如果上述第二差异值大于上述第一差异值,则基于上述备选集合和上述当前数据元素构建上述第一父成员并将上述第一父成员加入至上述第一层成员列表;如果上述第二差异值小于或等于上述第一差异值,则基于上述第二父成员和上述当前数据元素构建第三父成员并将上述第三父成员加入至第二层成员列表;
第三判断步骤,判断上述表格数据列表中是否存在尚未遍历的数据元素,如果是,则返回上述第一计算步骤,如果否,则得到上述父子关系。
作为一种可选的实施例,在阐述本申请实施例所提供的算法之前,以下先说明算法的部分python代码,以便于理解后续算法提供的方案:
在上述实现代码中,Member类型代表成员,该成员由数据的标识id,数据,及其父对象成员组成;Cluster类型代表集合,集合继承于Member,拥有中心数据id和中心数据,然而集合不存在父对象,并且拥有3层成员列表,除了第一层外,每一层的成员的父成员是上一层的成员之一,第一层只会有一个成员,便是集合本身。
可选的,可以通过distance_between函数,计算当前数据元素与上述集合列表中每个集合的中心数据之间的差异值,该函数接受3个参数,data1是指父数据;data2是指子数据;max_distance是指最大差异值,若计算得到的差异值超过该最大差异值,则表明说明当前数据元素与集合列表中每个集合的中心数据无法构成父子关系。
作为一种可选的实施例,在计算当前数据元素与上述集合列表中每个集合的中心数据之间的差异值之前,还可以先判断data1和data2是否能够构成父子关系,也即父数据的键集合必须是子数据键集合的一个子集,否则不能构成父子关系,后续计算子数据与父数据的不同键值对的个数便得到差异值。
在一种可选的实施例中,本申请实施例中,构建压缩数据结构的算法步骤可以但不限于如下所示:
步骤S1:输入表格数据字典table_dict;
步骤S2:将上述表格数据字典转化为表格数据列表table_list;
其中,通过将上述表格数据字典转化为表格数据列表,以便于遍历和获取上述表格数据列表中不同数据元素。
步骤S3:新建集合列表cluster_list,获取表格数据列表table_list[0]构建第一个集合cluster1并且加入到cluster_list;
步骤S4:遍历for data in table_list[1:],重复以下步骤步骤S4.1至步骤S4.3。
步骤S4.1:计算当前数据元素data与上述集合列表cluster_list中每个集合cluster的中心数据之间的差异值,将最小差异值的集合cluster确定为备选集合cluster_min,将上述最小差异值确定为第一差异值istance_center;
步骤S4.2:基于上述当前数据元素的键值对数量与上述第一差异值istance_center的比较结果,判断当前数据元素data能否成为上述备选集合cluster_min的成员,其中,当差异值小于当前数据元素data的键值对数量*0.8则表明可以作为备选集合cluster_min的成员。
其中,如果判断结果为是,则执行步骤S4.3;如果判断结果为否,则基于上述当前数据元素构建新的集合,并将上述新的集合加入至上述集合列表。
步骤S4.3:判断备选集合cluster_min是否存在第一层成员,如果不存在,则基于上述备选集合cluster_min和上述当前数据元素data构建第一父成员,并加入第一层成员列表;如果存在,则计算上述当前数据元素data与第一层所有成员之间的第二差异值,得到第二差异值最小的成员member为第二父成员maybe_parent_member,该第二差异值为maybe_parent_distance,如果第二差异值maybe_parent_distance大于第一差异值distance_center,则基于上述备选集合cluster_min和上述当前数据元素data构建上述第一父成员并将上述第一父成员加入至上述第一层成员列表;如果第二差异值maybe_parent_distance小于或等于第一差异值distance_center,则基于上述第二父成员maybe_parent_member和上述当前数据元素data构建第三父成员cluster并将上述第三父成员加入至第二层成员列表cluster_list。
在一种可选的实施例中,根据上述父子关系构建上述压缩数据结构包括:
第四判断步骤,判断当前集合中的当前成员是否存在父成员对象,如果是,则继续执行第二计算步骤,如果否,则执行第三计算步骤;
上述第二计算步骤,计算上述当前成员与上述父成员对象之间存在差异的键值对,将上述键值对中的第一键存储至第一元组并将上述键值对中的第一值存储至第二元组,以及采用三元组形式对上述父成员对象的标识、上述键值对中的第一键和上述键值对中的第一值进行存储,得到第一元数据;
上述第三计算步骤,计算上述当前成员的键值对,将上述键值对中的第二键存储至第三元组并将上述键值对中的第二值存储至第四元组,以及采用二元组形式对上述键值对中的第二键和上述键值对中的第二值进行存储,得到第二元数据;
第五判断步骤,判断上述集合列表中是否存在尚未遍历的集合,如果是,则返回上述第四判断步骤,如果否,则得到上述压缩数据结构。
可选的,上述根据上述父子关系构建上述压缩数据结构为一个python字典对象,称为meta_data。
作为一种可选的实施例,通过遍历for member in[member of cluster],重复下面的步骤:判断当前集合中的当前成员member是否存在父成员对象。
如果存在,则计算当前成员member与父成员对象之间存在差异的键值对,并且将上述键值对中的第一键存储至第一元组称为keys,将上述键值对中的第一值存储至第二元组称为values,keys和values由元组下标对应,并将父成员数据id,keys,values作为一个三元组进行存储,得到第一元数据meta_data,例如,代码meta_data[member.id]=(member.parent.id,keys,values)。
如果不存在,则计算当前成员member的数据的键值对,并且将上述键值对中的第二键存储至第三元组称为keys,将上述键值对中的第二值存储至第四元组称为values,并将keys,values作为二元组进行存储,得到第二元数据meta_data,例如,代码meta_data[member.id]=(keys,values)。
通过上述实施例,通过输入table_dict则输出meta_data,meta_data是一个字典对象,其表格数据被压缩为更少内存占用的数据结构,上述实施例中依据成员,集合,差异值的概念构建数据之间的父子关系,并根据父子关系构建了压缩数据结构,使用更节省内存的元组数据结构来存储数据的键值对。
作为一种可选的实施例,在基于上述表格数据字典构建上述压缩数据结构之前,即压缩处理表格数据之前,实现代码可以但不限于如下所示:
作为一种可选的实施例,在基于上述表格数据字典构建上述压缩数据结构之后,即压缩处理表格数据之后,实现代码可以但不限于如下所示:
作为一种可选的实施例,图3是根据本发明实施例的一种可选的表格数据字典的处理方法的流程图,如图3所示,将上述压缩数据结构还原为上述表格数据字典,并通过上述字典接口和上述语法糖反馈上述表格数据字典包括:
步骤S302,获取待访问键;
步骤S304,依据上述待访问键确定待访问值的长度;
步骤S306,基于上述待访问值的长度从上述第一元数据和上述第二元数据中确定待访问元数据;
步骤S308,利用上述待访问元数据将上述压缩数据结构还原为上述表格数据字典,并通过上述字典接口和上述语法糖反馈上述表格数据字典。
在一种可选的实施例中,基于上述待访问值的长度从上述第一元数据和上述第二元数据中确定上述待访问元数据包括:
步骤S402,如果上述待访问值的长度为第一数值,则将上述第二元数据确定为上述待访问元数据;
步骤S404,如果上述待访问值的长度为第二数值,则将上述第一元数据确定为上述待访问元数据。
可选的,可以用于实现python字典相同的字典接口和语法糖,核心的接口是__getitem__,上述字典接口和语法糖均可以为基于上述接口的封装。
可选的,本申请实施例中定义自定义类的实现代码可以但不限于如下所示:
class Dict(object):
def__init__(self,meta_data):
self.meta_data=meta_data
构建Dict对象只需要meta_data,Dict对象会持有meta_data的引用。
作为一种可选的实施例,上述__getitem__算法的流程,可以但不限于如下所示:
通过获取待访问键key,并判断待访问键key是否存在上述第一元数据和上述第二元数据meta_data里,如果不存在,抛出KeyError异常,若根据待访问键key从meta_data获得待访问值meta_value,判断待访问值meta_value的长度,并基于上述待访问值meta_value的长度从上述第一元数据和上述第二元数据中确定待访问元数据;其中,如果上述待访问值的长度为第一数值,则将上述第二元数据确定为上述待访问元数据;如果上述待访问值的长度为第二数值,则将上述第一元数据确定为上述待访问元数据。
在一种可选的实施例中,利用上述待访问元数据将上述压缩数据结构还原为上述表格数据字典,并通过上述字典接口和上述语法糖反馈上述表格数据字典包括:
步骤S502,如果将上述第二元数据确定为上述待访问元数据,则基于上述待访问值从上述压缩数据结构获取待返回键和待返回值;
步骤S504,采用上述待返回键和上述待返回值构建上述表格数据字典,并通过上述字典接口和上述语法糖反馈上述表格数据字典。
在上述可选的实施例中,如果将上述第二元数据确定为上述待访问元数据meta_value,则基于上述待访问值从上述压缩数据结构获取待返回键keys和待返回值values;采用上述待返回键keys和上述待返回值values构建上述表格数据字典python字典,并通过上述字典接口和上述语法糖反馈上述表格数据字典至调用对象。
在一种可选的实施例中,利用上述待访问元数据将上述压缩数据结构还原为上述表格数据字典,并通过上述字典接口和上述语法糖反馈上述表格数据字典包括:
步骤S602,如果将上述第一元数据确定为上述待访问元数据,则基于上述待访问值从上述压缩数据结构获取待返回父成员对象的标识、待返回键和待返回值;
步骤S604,通过上述待返回父成员对象的标识获取待返回父成员数据;
步骤S606,采用上述待返回父成员数据、上述待返回键和上述待返回值构建上述表格数据字典,并通过上述字典接口和上述语法糖反馈上述表格数据字典。
在上述可选的实施例中,如果将第一元数据确定为上述待访问元数据meta_value,基于上述待访问值从上述压缩数据结构获取待返回父成员对象的标识parent_id、待返回键keys和待返回值values;并以上述待返回父成员对象的标识parent_id作为输入,调用__getitem__函数获取待返回父成员数据parent_data。
进而可以采用上述待返回父成员数据、上述待返回键keys和上述待返回值values构建上述表格数据字典parent_data,并通过上述字典接口和上述语法糖反馈上述表格数据字典至调用对象。
实施例2
根据本发明实施例,还提供了一种用于实施上述表格数据字典的处理方法的装置实施例,图4是根据本发明实施例的一种表格数据字典的处理装置的结构示意图,如图4所示,上述表格数据字典的处理装置,包括:构建模块40和处理模块42,其中:
构建模块40,用于基于当前输入的表格数据字典构建压缩数据结构;处理模块42,用于在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;或者,上述各个模块以任意组合的方式位于不同的处理器中。
此处需要说明的是,上述构建模块40和处理模块42对应于实施例1中的步骤S102至步骤S106,上述模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在计算机终端中。
需要说明的是,本实施例的可选或优选实施方式可以参见实施例1中的相关描述,此处不再赘述。
上述的表格数据字典的处理装置还可以包括处理器和存储器,上述构建模块40和处理模块42等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元,上述内核可以设置一个或以上。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
根据本申请实施例,还提供了一种存储介质实施例。可选地,在本实施例中,上述存储介质包括存储的程序,其中,在上述程序运行时控制上述存储介质所在设备执行上述任意一种表格数据字典的处理方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中,上述存储介质包括存储的程序。
可选地,在程序运行时控制存储介质所在设备执行以下功能:基于当前输入的表格数据字典构建压缩数据结构;在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典。
根据本申请实施例,还提供了一种处理器实施例。可选地,在本实施例中,上述处理器用于运行程序,其中,上述程序运行时执行上述任意一种表格数据字典的处理方法。
本申请实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:基于当前输入的表格数据字典构建压缩数据结构;在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:基于当前输入的表格数据字典构建压缩数据结构;在数据访问过程中,将上述压缩数据结构还原为上述表格数据字典,并通过字典接口和语法糖反馈上述表格数据字典。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种表格数据字典的处理方法,其特征在于,包括:
基于当前输入的表格数据字典构建压缩数据结构;
在数据访问过程中,将所述压缩数据结构还原为所述表格数据字典,并通过字典接口和语法糖反馈所述表格数据字典;
其中,基于所述表格数据字典构建所述压缩数据结构包括:将所述表格数据字典转化为表格数据列表;构建所述表格数据列表中不同数据元素之间的父子关系;根据所述父子关系构建所述压缩数据结构;
将所述压缩数据结构还原为所述表格数据字典,并通过所述字典接口和所述语法糖反馈所述表格数据字典,包括:获取待访问键;依据所述待访问键确定待访问值的长度;基于所述待访问值的长度从第一元数据和第二元数据中确定待访问元数据,其中,所述第一元数据由当前集合中当前成员和父成员之间存在差异的键值对构建,所述第二元数据由所述当前成员的键值对构建;利用所述待访问元数据将所述压缩数据结构还原为所述表格数据字典,并通过所述字典接口和所述语法糖反馈所述表格数据字典。
2.根据权利要求1所述的方法,其特征在于,构建所述表格数据列表中不同数据元素之间的父子关系包括:
生成步骤,分别为所述表格数据列表中每个数据元素构建集合,生成集合列表;
第一计算步骤,计算当前数据元素与所述集合列表中每个集合的中心数据之间的差异值,将最小差异值的集合确定为备选集合以及将所述最小差异值确定为第一差异值,其中,所述中心数据用于表征构建所述集合的数据;
第一判断步骤,基于所述当前数据元素的键值对数量与所述第一差异值的比较结果,判断所述当前数据元素是否能够成为所述备选集合的成员;如果是,则继续执行第二判断步骤,如果否,则基于所述当前数据元素构建新的集合,并将所述新的集合加入至所述集合列表;
第二判断步骤,判断所述备选集合是否存在第一层成员;如果否,则基于所述备选集合和所述当前数据元素构建第一父成员并将所述第一父成员加入至第一层成员列表,如果是,则计算所述当前数据元素与所述第一层成员之间的第二差异值,并将第二差异值最小的成员确定为所述当前数据元素的第二父成员;如果所述第二差异值大于所述第一差异值,则基于所述备选集合和所述当前数据元素构建所述第一父成员并将所述第一父成员加入至所述第一层成员列表;如果所述第二差异值小于或等于所述第一差异值,则基于所述第二父成员和所述当前数据元素构建第三父成员并将所述第三父成员加入至第二层成员列表;
第三判断步骤,判断所述表格数据列表中是否存在尚未遍历的数据元素,如果是,则返回所述第一计算步骤,如果否,则得到所述父子关系。
3.根据权利要求2所述的方法,其特征在于,根据所述父子关系构建所述压缩数据结构包括:
第四判断步骤,判断当前集合中的当前成员是否存在父成员对象,如果是,则继续执行第二计算步骤,如果否,则执行第三计算步骤;
所述第二计算步骤,计算所述当前成员与所述父成员对象之间所述存在差异的键值对,将所述存在差异的键值对中的第一键存储至第一元组并将所述存在差异的键值对中的第一值存储至第二元组,以及采用三元组形式对所述父成员对象的标识、所述存在差异的键值对中的第一键和所述存在差异的键值对中的第一值进行存储,得到所述第一元数据;
所述第三计算步骤,计算所述当前成员的键值对,将所述当前成员的键值对中的第二键存储至第三元组并将所述键值对中的第二值存储至第四元组,以及采用二元组形式对所述当前成员的键值对中的第二键和所述键值对中的第二值进行存储,得到所述第二元数据;
第五判断步骤,判断所述集合列表中是否存在尚未遍历的集合,如果是,则返回所述第四判断步骤,如果否,则得到所述压缩数据结构。
4.根据权利要求1所述的方法,其特征在于,基于所述待访问值的长度从所述第一元数据和所述第二元数据中确定所述待访问元数据包括:
如果所述待访问值的长度为第一数值,则将所述第二元数据确定为所述待访问元数据;
如果所述待访问值的长度为第二数值,则将所述第一元数据确定为所述待访问元数据。
5.根据权利要求1所述的方法,其特征在于,利用所述待访问元数据将所述压缩数据结构还原为所述表格数据字典,并通过所述字典接口和所述语法糖反馈所述表格数据字典包括:
如果将所述第二元数据确定为所述待访问元数据,则基于所述待访问值从所述压缩数据结构获取待返回键和待返回值;
采用所述待返回键和所述待返回值构建所述表格数据字典,并通过所述字典接口和所述语法糖反馈所述表格数据字典。
6.根据权利要求1所述的方法,其特征在于,利用所述待访问元数据将所述压缩数据结构还原为所述表格数据字典,并通过所述字典接口和所述语法糖反馈所述表格数据字典包括:
如果将所述第一元数据确定为所述待访问元数据,则基于所述待访问值从所述压缩数据结构获取待返回父成员对象的标识、待返回键和待返回值;
通过所述待返回父成员对象的标识获取待返回父成员数据;
采用所述待返回父成员数据、所述待返回键和所述待返回值构建所述表格数据字典,并通过所述字典接口和所述语法糖反馈所述表格数据字典。
7.一种表格数据字典的处理装置,其特征在于,包括:
构建模块,用于基于当前输入的表格数据字典构建压缩数据结构;
处理模块,用于在数据访问过程中,将所述压缩数据结构还原为所述表格数据字典,并通过字典接口和语法糖反馈所述表格数据字典;
其中,所述构建模块还用于:将所述表格数据字典转化为表格数据列表;构建所述表格数据列表中不同数据元素之间的父子关系;根据所述父子关系构建所述压缩数据结构;
所述处理模块还用于:获取待访问键;依据所述待访问键确定待访问值的长度;基于所述待访问值的长度从第一元数据和第二元数据中确定待访问元数据,其中,所述第一元数据由当前集合中当前成员和父成员之间存在差异的键值对构建,所述第二元数据由所述当前成员的键值对构建;利用所述待访问元数据将所述压缩数据结构还原为所述表格数据字典,并通过所述字典接口和所述语法糖反馈所述表格数据字典。
8.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至6中任意一项所述的表格数据字典的处理方法。
9.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至6中任意一项所述的表格数据字典的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010047487.4A CN111209741B (zh) | 2020-01-16 | 2020-01-16 | 表格数据字典的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010047487.4A CN111209741B (zh) | 2020-01-16 | 2020-01-16 | 表格数据字典的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111209741A CN111209741A (zh) | 2020-05-29 |
CN111209741B true CN111209741B (zh) | 2023-09-26 |
Family
ID=70787731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010047487.4A Active CN111209741B (zh) | 2020-01-16 | 2020-01-16 | 表格数据字典的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111209741B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328231B (zh) * | 2020-10-14 | 2024-02-23 | 远江盛邦(北京)网络安全科技股份有限公司 | python字典和结构体间的快速转换方法 |
CN112307721B (zh) * | 2020-10-30 | 2022-08-30 | 广州朗国电子科技股份有限公司 | 一种第三方接口数据快速转为定制表格方法及存储介质 |
CN113761486B (zh) * | 2021-09-10 | 2023-09-05 | 上海熙菱信息技术有限公司 | 一种基于语法糖解析的一键式代码混淆方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766314A (zh) * | 2017-10-20 | 2018-03-06 | 网易(杭州)网络有限公司 | 电子表格的数据处理方法和装置 |
CN108280099A (zh) * | 2017-01-11 | 2018-07-13 | 广州市动景计算机科技有限公司 | 数据字典管理方法、装置及服务器 |
CN110399104A (zh) * | 2019-07-23 | 2019-11-01 | 网易(杭州)网络有限公司 | 数据存储方法、数据存储装置、电子设备、存储介质 |
-
2020
- 2020-01-16 CN CN202010047487.4A patent/CN111209741B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108280099A (zh) * | 2017-01-11 | 2018-07-13 | 广州市动景计算机科技有限公司 | 数据字典管理方法、装置及服务器 |
CN107766314A (zh) * | 2017-10-20 | 2018-03-06 | 网易(杭州)网络有限公司 | 电子表格的数据处理方法和装置 |
CN110399104A (zh) * | 2019-07-23 | 2019-11-01 | 网易(杭州)网络有限公司 | 数据存储方法、数据存储装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111209741A (zh) | 2020-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111209741B (zh) | 表格数据字典的处理方法及装置 | |
CN111249736B (zh) | 代码处理方法及装置 | |
CN112116436B (zh) | 一种智能推荐方法、装置、计算机设备及可读存储介质 | |
US20190286980A1 (en) | Cluster compression for compressing weights in neural networks | |
CN114245896A (zh) | 向量查询方法、装置、电子设备及存储介质 | |
CN115964568A (zh) | 一种基于边缘缓存的个性化推荐方法 | |
CN111127185A (zh) | 信贷欺诈识别模型构建方法及装置 | |
CN113821667A (zh) | 基于人工智能的图像处理方法、装置及电子设备 | |
CN114764557A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN115905630A (zh) | 一种图数据库查询方法、装置、设备及存储介质 | |
CN110957003B (zh) | 一种面向用户隐私保护的高效基因比对方法 | |
CN116522003B (zh) | 基于嵌入表压缩的信息推荐方法、装置、设备和介质 | |
CN111028092A (zh) | 基于Louvain算法的社区发现方法、计算机设备及其可读存储介质 | |
CN113448876B (zh) | 一种业务测试方法、装置、计算机设备及存储介质 | |
CN115129949A (zh) | 向量范围检索的方法、装置、设备、介质及程序产品 | |
CN110728118B (zh) | 跨数据平台的数据处理方法、装置、设备及存储介质 | |
CN114268625A (zh) | 特征选择方法、装置、设备及存储介质 | |
CN112925803A (zh) | 一种接口的数据处理方法及装置 | |
CN111143641A (zh) | 深度学习模型的训练方法、装置及电子设备 | |
CN116257524A (zh) | 利用位图索引存储数据的方法、装置、计算机设备 | |
Przewozniczek et al. | Fitness caching-from a minor mechanism to major consequences in modern evolutionary computation | |
CN116483433A (zh) | 一种信贷业务外数厂商Json报文数据高效降维及还原方法 | |
CN114155928A (zh) | 表单生成方法、装置、计算机设备和存储介质 | |
CN117495518A (zh) | 银行积分系统的物品管理方法、装置、设备和存储介质 | |
CN114863333A (zh) | 视频查重方法、设备、存储介质及计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |