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

如何基于清洗后字典的公共值生成原字典格式的目标输出?

提取字典公共特征并还原原始格式

问题背景

我已经将字典dic1处理为dic2(移除dic1中每个元素末尾的一位数字完成清洗),目的是找出不同键下的公共值。我已经通过以下代码获取了公共特征集合common:

from functools import reduce

dic1 = {"df1":["age_0" , "nnn220","abc70"], "df2":["age_1", "a221","abc71"]} 
dic2 = {"df1":["age","nnn22","abc7"], "df2":["age", "a22","abc7"]} 

dataframe_list = list(dic2.values())
common = reduce(lambda a, b: set(a) & set(b), dataframe_list)

# 得到的common集合
# common = {'age', 'abc7'}

但我不知道如何将这些公共特征对应回dic1中的原始格式,期望得到的最终输出如下:

final_output = {"df1":["age_0", "abc70"], "df2":["age_1","abc71"]} 

解决方案

核心是建立清洗后的值与原始值的映射关系,再根据公共特征筛选每个键对应的原始值,代码实现如下:

from functools import reduce

dic1 = {"df1":["age_0" , "nnn220","abc70"], "df2":["age_1", "a221","abc71"]} 
dic2 = {"df1":["age","nnn22","abc7"], "df2":["age", "a22","abc7"]} 

# 获取公共特征集合
dataframe_list = list(dic2.values())
common = reduce(lambda a, b: set(a) & set(b), dataframe_list)

# 生成最终输出字典
final_output = {}
for key in dic1:
    # 配对当前键下的原始值与清洗后的值
    value_pairs = zip(dic1[key], dic2[key])
    # 筛选出清洗后的值属于公共集合的原始值
    final_output[key] = [orig_val for orig_val, cleaned_val in value_pairs if cleaned_val in common]

print(final_output)
# 输出结果: {'df1': ['age_0', 'abc70'], 'df2': ['age_1', 'abc71']}

代码说明

  • 用zip(dic1[key], dic2[key])将每个键下的原始值和清洗后的值一一配对,确保对应关系准确
  • 通过列表推导式筛选符合条件的原始值,保留dic1中原有的元素顺序
  • 逻辑直接高效,不需要额外的复杂映射结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:22:28