如何使用键值对列表创建数据结构?

时间:2021-07-13 02:54:42

标签: python-3.x list dictionary data-structures hashmap

我有以下数据作为输入,希望创建如下数据结构。

输入:

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 很陌生,所以需要一些帮助。

1 个答案:

答案 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"}],
}
相关问题