You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何声明绑定自定义类的嵌套字典以存储RSSI分析数据

实现方案

方案1:调整自定义类初始化+defaultdict实现等效C++ map逻辑

第一步:优化自定义类构造函数

你原有的类需要在实例化时传入所有列表参数,使用门槛较高,修改为默认初始化所有属性为空列表即可:

class summary_lists(object):
    def __init__(self, dist_list=None, mean_list=None, median_list=None, mode_list=None,
                std_dev_list=None, mmode_list=None, unique_count_list=None, total_datapoint_list=None,
                min_list=None, max_list=None):
        self.dist_list = dist_list if dist_list is not None else []
        self.mean_list = mean_list if mean_list is not None else []
        self.mode_list = mode_list if mode_list is not None else []
        self.median_list = median_list if median_list is not None else []
        self.std_dev_list = std_dev_list if std_dev_list is not None else []
        self.mmode_list = mmode_list if mmode_list is not None else []
        self.unique_count_list = unique_count_list if unique_count_list is not None else []
        self.total_datapoint_list = total_datapoint_list if total_datapoint_list is not None else []
        self.min_list = min_list if min_list is not None else []
        self.max_list = max_list if max_list is not None else []

第二步:声明目标数据结构

使用collections.defaultdict设置默认工厂函数为summary_lists,即可实现你期望的调用逻辑,和C++中map<int, summary_lists>的用法完全一致:

import collections
ch_rssiattr_list = collections.defaultdict(summary_lists)

使用示例:

# 直接按信道访问对应类实例,追加统计值即可
channel = 6
current_mean = -47.3
ch_rssiattr_list[channel].mean_list.append(current_mean)

方案2:不修改原有类的替代声明方式

如果你不想改动原有summary_lists的定义,可以直接在defaultdict的工厂函数中传入所有空列表参数:

import collections
ch_rssiattr_list = collections.defaultdict(lambda: summary_lists([],[],[],[],[],[],[],[],[]))

可选优化:用dataclass简化类定义

Python 3.7内置的dataclasses模块可以大幅简化纯数据类的定义,无需手动编写冗长的初始化逻辑:

from dataclasses import dataclass, field
from typing import List
import collections

@dataclass
class SummaryLists:
    dist_list: List[float] = field(default_factory=list)
    mean_list: List[float] = field(default_factory=list)
    median_list: List[float] = field(default_factory=list)
    mode_list: List[float] = field(default_factory=list)
    std_dev_list: List[float] = field(default_factory=list)
    mmode_list: List[float] = field(default_factory=list)
    unique_count_list: List[int] = field(default_factory=list)
    total_datapoint_list: List[int] = field(default_factory=list)
    min_list: List[float] = field(default_factory=list)
    max_list: List[float] = field(default_factory=list)

# 声明数据结构的方式完全不变
ch_rssiattr_list = collections.defaultdict(SummaryLists)

内容的提问来源于stack exchange,提问作者chaz88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 17:54:06