Skip to content
This repository has been archived by the owner on Jan 2, 2021. It is now read-only.

Latest commit

 

History

History
548 lines (398 loc) · 19.3 KB

File metadata and controls

548 lines (398 loc) · 19.3 KB

Introduce

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...]
	}

Functions

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)

part_3: basic_select

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)

part5: relationship

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)

part6: show and display

1. max_rows_in_table_via_cols_dict(COLs)

2. max_cols_in_table_via_rows_dict(ROWs)

3. padding_rows(ROWs)

4. padding_cols(COLs)

5. rows_to_cols(ROWs)

6. cols_to_rows(COLs)

7. display_table_via_rows(ROWs)

8. display_table_via_cols(COLs)

9. show_crtable(crtable)