Пример #1
0
 def expand(d,level):#,nrows=nrows,ncols=ncols):
     #self.debug('\texpand(%s(%s),%s)'%(type(d),d,level))
     for k,v in sorted(d.items() if hasattr(d,'items') else d):
         zero = data['nrows']
         data[(data['nrows'],level)] = k
         if fun.isDictionary(v): 
             data['ncols']+=1
             expand(v,level+1)
         else:
             if not fun.isSequence(v): v = [v]
             for t in v:
                 data[(data['nrows'],level+1)] = t
                 data['nrows']+=1
Пример #2
0
def dict2array(dct):
    """ Converts a dictionary in a table showing nested data, lists are unnested columns """
    data,table = {},[]
    data['nrows'],data['ncols'] = 0,2 if fun.isDictionary(dct) else 1
    def expand(d,level):#,nrows=nrows,ncols=ncols):
        #self.debug('\texpand(%s(%s),%s)'%(type(d),d,level))
        for k,v in sorted(d.items() if hasattr(d,'items') else d):
            zero = data['nrows']
            data[(data['nrows'],level)] = k
            if fun.isDictionary(v): 
                data['ncols']+=1
                expand(v,level+1)
            else:
                if not fun.isSequence(v): v = [v]
                for t in v:
                    data[(data['nrows'],level+1)] = t
                    data['nrows']+=1
            #for i in range(zero+1,nrows): data[(i,level)] = None
    expand(dct,0)
    [table.append([]) for r in range(data.pop('nrows'))]
    [table[r].append(None) for c in range(data.pop('ncols')) for r in range(len(table))]
    for coord,value in data.items(): table[coord[0]][coord[1]] = value
    return table