Python如何处理含列表值的字典,生成带固定前缀补全值的新字典
正确实现代码
基础易读版本
d1 = { 'A': ['col1', 'col2'], 'B': ['col3', 'col4'], 'C': ['col5', 'col6'] } # 第一步:提取全量列名,展开为一维列表 all_cols = [] for cols in d1.values(): all_cols.extend(cols) d2 = {} # 第二步:逐个键生成目标列表 for key, own_cols in d1.items(): current_res = [] for col in all_cols: # 属于当前键的列保留原值,否则加前缀 current_res.append(col if col in own_cols else f"0 {col}") d2[key] = current_res print(d2)
简洁推导式版本
d1 = {'A': ['col1', 'col2'], 'B': ['col3', 'col4'], 'C': ['col5', 'col6']} all_cols = [col for cols in d1.values() for col in cols] d2 = { k: [col if col in own_cols else f"0 {col}" for col in all_cols] for k, own_cols in d1.items() }
原代码的问题说明
- 你定义的
c1是二维列表[['col1','col2'], ['col3','col4'], ['col5','col6']],没有把所有列展开为全量一维列表,遍历逻辑不符合需求 - 内层循环中直接给
d2[k]赋值,每次都会覆盖上一次的结果,没有逐个元素判断、拼接列表的逻辑
内容的提问来源于stack exchange,提问作者Paddy Iyer
相关产品推荐
相关产品推荐

