-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutil.py
73 lines (63 loc) · 2.26 KB
/
util.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Created by ChenXin on 2017/9/7
def _mul_filter_tool(dic_input, out):
"""
:param input {"table1":{"column1":value1,"column2":value2}}
:param out {"table1":{"column1":("key1",convert_method1),"column2":("key2",convert_method2)}}
:return
{"key1":"value1","key2":"value2"....}
"""
_dic = dict()
for k, v in out.items():
for key, value in v.items():
_dic[value[0]] = dic_input[k][key]
return _dic
def _single_filter_tool(dic_input, out):
"""
:param input {"column1":value1,"column2":value2}
:param out {"column1":("key1",convert_method1),"column2":("key2",convert_method2)}
:return
{"key1":"value1","key2":"value2"....}
"""
return {out[k][0]: dic_input[k] for k, v in out.items()}
def _table_columns(list_input):
"""
:param input ["column1","column2"....]
:return
{"column1":("column1",),"column2":("column2",)....}
"""
_dic_input = dict()
if isinstance(list_input, list):
for item in list_input:
if isinstance(item, (str, unicode)):
_dic_input[item] = (item,)
elif isinstance(item, (list, tuple)):
_dic_input[item[0]] = (item[1],)
elif isinstance(item, dict):
for k, v in item.items():
_dic_input[k] = (v,)
return _dic_input
else:
return list_input
def filter_tool(dic_input, out):
_out = dict()
if isinstance(out, list):
_out = _table_columns(out)
else:
for k, v in out.items():
if isinstance(v, list):
_out[k] = _table_columns(v)
else:
_out[k] = out[k]
# print _out
if isinstance(dic_input[_out.keys()[0]], dict):
return _mul_filter_tool(dic_input, _out)
else:
return _single_filter_tool(dic_input, _out)
if __name__ == '__main__':
print filter_tool({"table1": {"column1": "value1", "column2": "value2"}},
{"table1": ["column1", ("column2", "k2")]})
print filter_tool({"table1": {"column1": "value1", "column2": "value2"}},
{"table1": ["column1", {"column2": "k2"}]})
print filter_tool({"column1": "value1", "column2": "value2"}, ["column2"])