我有以下数据作为输入,希望创建如下数据结构。
输入:
Key,type,alias
Aggregator_aggregator_se,Sorter,So_so
Aggregator_aggregator_se,Sorter,So_so
Aggregator_aggregator_se,Sorter,So_so
Expression_expr_se,Aggregator,Ag_ag
Expression_expr_se,Aggregator,Ag_ag
Expression_expr_se,Aggregator,Ag_ag
Expression_expr_se,Aggregator,Ag_ag
Expression_expr_se,Aggregator,Ag_ag
Expression_expr_se,Sorter,So_so
Expression_expr_se,Sorter,So_so
Expression_expr_se,Aggregator,Ag_ag
Expression_expr_se,Aggregator,Ag_ag
Filter_filter_se,Expression,Ex_ex
Filter_filter_se,Expression,Ex_ex
Filter_filter_se,Expression,Ex_ex
Filter_filter_se,Expression,Ex_ex
Filter_filter_se,Expression,Ex_ex
输出:
{ 'Aggregator_aggregator_se' : [ {type: 'Sorter', count: 3, value: 'So_so'],
'Expression_expr_se' : [ {type: 'Aggregator', count: 7, value: 'Ag_ag'}, {type: 'Sorter', count: 2, value: 'So_so'}],
'Filter_filter_se' : [ {type: 'Expression', count: 5,value: 'Ex_ex']
}
我应该如何实现这种数据结构? 我对 python 很陌生,所以需要一些帮助。
答案 0 :(得分:1)
试试:
import csv
out = {}
with open("your_data_file.txt") as f_in:
reader = csv.reader(f_in)
# skip header
next(reader)
for line in reader:
# skip empty lines
if not line:
continue
key, type_, value = line
out.setdefault(key, {}).setdefault(type_, {}).setdefault(value, 0)
out[key][type_][value] += 1
out = {
k: [
{"type": kk, "count": vvv, "value": kkk}
for kk, vv in v.items()
for kkk, vvv in vv.items()
]
for k, v in out.items()
}
print(out)
打印:
{
"Aggregator_aggregator_se": [
{"type": "Sorter", "count": 3, "value": "So_so"}
],
"Expression_expr_se": [
{"type": "Aggregator", "count": 7, "value": "Ag_ag"},
{"type": "Sorter", "count": 2, "value": "So_so"},
],
"Filter_filter_se": [{"type": "Expression", "count": 5, "value": "Ex_ex"}],
}