Python中如何系统填充元组键字典的所有ID-type组合条目
如何为元组键字典补全所有ID与type的组合(缺失值设为0)?
假设你有一个以(ID, type)为元组键的字典,需要补全所有ID和type的笛卡尔积组合,缺失的组合值设为0,这里提供两种高效实现方式:
方法1:字典推导式 + itertools.product
利用itertools.product快速生成ID与type的所有可能组合,再通过字典推导式构建最终字典——原字典中存在的键取对应值,不存在的取0:
import itertools original_dict = {(1,2): 5, (2,1): 7, (3,2): 15, (4,3): 10} id_range = range(1, 5) # ID范围1-4 type_range = range(1, 4) # type范围1-3 full_dict = {(id_, t): original_dict.get((id_, t), 0) for id_, t in itertools.product(id_range, type_range)}
方法2:初始化全0字典 + 更新原数据
先创建包含所有组合的全0字典,再用原字典的键值对覆盖已有条目,逻辑更直观:
original_dict = {(1,2): 5, (2,1): 7, (3,2): 15, (4,3): 10} id_range = range(1, 5) type_range = range(1, 4) # 先初始化所有组合为0 full_dict = {(id_, t): 0 for id_ in id_range for t in type_range} # 用原字典更新存在的键值 full_dict.update(original_dict)
这两种方法的时间复杂度都是O(M*N)(M为ID数量,N为type数量),属于最优复杂度——因为必须遍历所有可能的组合才能确保没有遗漏。
内容的提问来源于stack exchange,提问作者PCMitchell
相关产品推荐
相关产品推荐

