two-dimension ltdict used as a multi-keys/multi-values dict
or used as a light-weight small database
for example:
+++++++++++++++++++++++++++++++++++++++++++
+++| size| color| language| expire |
+++++++++++++++++++++++++++++++++++++++++++
+++| 0| 1| 2| 3 |
+++++++++++++++++++++++++++++++++++++++++++
+ 0| 500| green| espanol|2018-dec-01|
+++++++++++++++++++++++++++++++++++++++++++
+ 1| 74| green| chinese|2017-oct-01|
+++++++++++++++++++++++++++++++++++++++++++
+ 2| 300|darkblack| spanish|2017-oct-01|
+++++++++++++++++++++++++++++++++++++++++++
+ 3|100000| blue| english|2018-dec-01|
+++++++++++++++++++++++++++++++++++++++++++
+ 4| 500| green| english|2017-oct-01|
+++++++++++++++++++++++++++++++++++++++++++
the upper table will be stored in a two-dimensiton ltdict as below:
>>> table[0]
{0: 500, 1: 'green', 2: 'espanol', 3: '2018-dec-01'}
>>> table[1]
{0: 74, 1: 'green', 2: 'chinese', 3: '2017-oct-01'}
>>> table[2]
{0: 300, 1: 'darkblack', 2: 'spanish', 3: '2017-oct-01'}
>>> table[3]
{0: 100000, 1: 'blue', 2: 'english', 3: '2018-dec-01'}
>>> table[4]
{0: 500, 1: 'green', 2: 'english', 3: '2017-oct-01'}
>>>
for each row :each column is a attrib, all columns are called attribs:
attribs: {0: 500, 1: 'green', 2: 'espanol', 3: '2018-dec-01'}
attribnames: size,color,language,expire
each attribname must be string
attribindexes:0,1,2,3
each attribindex must be int
attrib_name_index_mirror_dict: animd
{
0: 'size',
1: 'color',
2: 'language',
3: 'expire',
'size': 0,
'language': 2,
'color': 1,
'expire': 3
}
keys are a subset of attribs: {1:'green',2:'espanol'},
values are a subset of attribs: {0:'500',3:'2018-dec-01'},
keys have no intersection with values,
attribs consist of keys and values: {0: 500, 1: 'green', 2: 'espanol', 3: '2018-dec-01'},
keynames: color,language
each keyname must be string
keyindexes:1,2
each keyindex must be int
valunames: size,expire
each valuename must be string
valueindexes:0,3
each valueindex must be int
key_name_index_mirror_dict: knimd
{
1: 'color',
2: 'language',
'language': 2,
'color': 1
}
value_name_index_mirror_dict: vnimd
{
0: 'size',
3: 'expire',
'size': 0,
'expire': 3
}
crtable is a dict as below:
crtable = {
'table': {...two-dimension ltdict...},
'animd': {...attrib_name_index_mirror_dict...},
'knimd': {...key_name_index_mirror_dict...},
'vnimd': {...value_name_index_mirror_dict...},
'keynameslist' :[...keynameslist...],
'valuenameslist' :[...valuenameslist...],
'colnameslist' :[...colnameslist...]
}
part_1: name_index_mirror_dict
1. is_name_index_mirror_dict(name_index_mirror_dict)
2. creat_mirror_dict(refdict):
3. get_indexonly_refdict(refdict,**kwargs)
4. get_nameonly_refdict(refdict,**kwargs)
5. get_mirror_dict_via_indexeslist(indexes_list,attribs_name_index_mirror_dict)
6. get_mirror_dict_via_nameslist(names_list,attribs_name_index_mirror_dict)
7. get_the_other_mirror_dict_via_indexeslist(indexes_list,attribs_name_index_mirror_dict)
8. get_the_other_mirror_dict_via_nameslist(names_list,attribs_name_index_mirror_dict)
9. get_indexes_list_via_names_list(names_list,attribs_name_index_mirror_dict)
10. get_names_list_via_indexes_list(indexes_list,attribs_name_index_mirror_dict)
11. get_the_other_indexes_list_via_indexes_list(indexes_list,attribs_name_index_mirror_dict)
12. get_the_other_indexes_list_via_names_list(names_list,attribs_name_index_mirror_dict)
13. get_the_other_names_list_via_indexes_list(indexes_list,attribs_name_index_mirror_dict)
14. get_the_other_names_list_via_names_list(names_list,attribs_name_index_mirror_dict)
15. naturalize_refdict(refdict,**kwargs)
part_2:attribs_keys_values
1. nameattribs_to_indexattribs(attribs,attribs_name_index_mirror_dict)
2. indexattribs_to_nameattribs(attribs,attribs_name_index_mirror_dict)
3. format_attribs_indexdominant(attribs,attribs_name_index_mirror_dict)
4. format_keys_indexdominant(keys,attribs_name_index_mirror_dict)
5. format_values_indexdominant(values,attribs_name_index_mirror_dict)
6. format_attribs_namedominant(attribs,attribs_name_index_mirror_dict)
7. format_keys_namedominant(keys,attribs_name_index_mirror_dict)
8. format_values_namedominant(values,attribs_name_index_mirror_dict)
9. format_attribs_to_indexkeyonly(attribs,attribs_name_index_mirror_dict,**kwargs)
10. format_keys_to_indexkeyonly(keys,attribs_name_index_mirror_dict)
11. format_values_to_indexkeyonly(values,attribs_name_index_mirror_dict)
12. format_attribs_to_namekeyonly(attribs,attribs_name_index_mirror_dict,**kwargs)
13. format_keys_to_namekeyonly(keys,attribs_name_index_mirror_dict)
14. format_values_to_namekeyonly(values,attribs_name_index_mirror_dict)
15. indextable_to_nametable(indextable,attribs_name_index_mirror_dict)
16. nametable_to_indextable(nametable,attribs_name_index_mirror_dict)
1. get_seqslist_via_attribs(attribs,crtable)
2. get_seqslist_via_keys(keys,crtable)
3. get_seqslist_via_values(values,crtable)
4. get_values_in_attribs(keys,attribs,attribs_name_index_mirror_dict,**kwargs)
5. get_keys_in_attribs(values,attribs,attribs_name_index_mirror_dict,**kwargs)
6. get_valueslist_via_keys(keys,crtable,**kwargs)
7. get_keyslist_via_values(values,crtable,**kwargs)
8. get_column_via_attribindex(index,crtable)
9. get_column_via_attribname(name,crtable)
10. get_attribslist_of_column_via_attribindex(index,crtable)
11. get_attribslist_of_column_via_attribname(name,crtable)
12. get_seqslist_of_column_via_attribindex(index,crtable)
13. get_seqslist_of_column_via_attribname(name,crtable)
14. get_domainset_of_column_via_attribindex(index,crtable)
15. get_domainset_of_column_via_attribname(name,crtable)
part4: creat,init,append,prepend,del,modify,insert
1. creat_empty_crtable(column_name_dict,**kwargs)
2. expand_part_attribs(attribs,attribs_name_index_mirror_dict,**kwargs)
3. append_row(row,crtable)
4. append_col(col,crtable)
5. append_rows(rows,crtable)
6. append_cols(cols,crtable)
7. prepend_row(row,crtable)
8. prepend_col(col,crtable)
9. prepend_rows(rows,crtable)
10. prepend_cols(cols,crtable)
11. del_col_via_colnum(colnum,crtable,**kwargs)
12. del_cols_via_colnumslist(colnumlist,crtable,**kwargs)
13. del_col_via_colname(colname,crtable,**kwargs)
14. del_cols_via_colnameslist(colnameslist,crtable,**kwargs)
15. del_rows_via_attribs(attribs,crtable,**kwargs)
16. del_rows_via_keys(keys,crtable,**kwargs)
17. del_rows_via_values(values,crtable,**kwargs)
18. modify_rows_via_seq(seq,crtable,modified_to)
19. modify_rows_via_attribs(attribs,crtable,modified_to)
20. modify_rows_via_keys(keys,crtable,modified_to,**kwargs)
21. modify_rows_via_values(values,crtable,modified_to,**kwargs)
22. modify_col_via_colnum(colnum,crtable,modified_to)
23. modify_col_via_colname(colname,crtable,modified_to)
24. insert_col(colnum,colname,col,crtable,**kwargs)
25. insert_cols(colnumlist,colnamelist,cols,crtable,**kwargs)
26. insert_row(rownum,row,crtable)
27. insert_rows(rownumlist,rows,crtable,**kwargs)
1. product_mirror_dicts(mds)
2. product_two_tables(table_1,table_2)
3. product_tables(tables)
4. product_crtables(crtables)
5. project_mirror_dict(md,colnameslist)
6. project_table(colnumslist,table,**kwargs)
7. project_crtable(colnameslist,crtable,**kwargs)
8. row_in_crtable(row,crtable)
9. col_in_crtable(col,crtable,**kwargs)
10. partlyrow_in_crtable(row,crtable)
11. partlycol_in_crtable(col,crtable,**kwargs)
12. unique_crtable(crtable,**kwargs)
13. union_crtables(crtables)
14. intersec_two_crtables(crtable_1,crtable_2,**kwargs)
15. intersec_crtables(crtables,**kwargs)
16. naturalize_table(table)
17. naturalize_crtable(crtable)
18. comprise_table(table_1,table_2)
19. comprise_crtable(crtable_1,crtable_2,**kwargs)
20. equal(crtable_1,crtable_2,**kwargs)
21. get_newcrtable_via_colnumslist(colnumslist,crtable,**kwargs)
22. get_newcrtable_via_colnameslist(colnameslist,crtable,**kwargs)
23. diff_two_crtables(crtable_1,crtable_2,**kwargs)
24. thetajoin_two_crtables(colnameslist_1,crtable_1,colnameslist_2,crtable_2,theta_function,**kwargs)
25. equijoin_two_crtables(colnameslist_1,crtable_1,colnameslist_2,crtable_2,**kwargs)
26. naturaljoin_mirror_dict(md)
27. get_image_sets_dict(crtable,colnameslist)
28. divide_two_crtables(crtable_1,crtable_2,colnameslist,**kwargs)
29. is_single_candidate_key(crtable,name)
30. is_candidate_key_combo(crtable,colnameslist)
31. get_all_candidate_key_combo(crtable)
1. max_rows_in_table_via_cols_dict(COLs)
2. max_cols_in_table_via_rows_dict(ROWs)
7. display_table_via_rows(ROWs)
8. display_table_via_cols(COLs)