如何基于两个输入字典生成含二进制值的嵌套字典
可行实现方案
完全可以通过简单的字典遍历实现需求,逻辑完全匹配给出的赋值规则,还能对齐示例的键顺序。
实现逻辑
- 遍历两个输入字典共有的外层键
- 对每个外层键,优先录入字典1对应列表的元素,统一赋值为1,放在内层字典前部
- 再录入字典2对应列表的元素,仅当元素不存在于当前内层字典时赋值为0,既不会覆盖字典1的同元素值,也能把字典2的元素放在内层字典后部
- 最终汇总得到符合要求的输出字典
可直接运行的代码
# 输入字典 d1 = {'ad':['gf','tr','st'],'ft':['te','gr','mf']} d2 = {'ad':['te','mr','lr','kr','er'],'ft':['ty','yr','qf','fg','jh']} output = {} # 遍历所有外层键(两个字典外层键完全一致) for outer_key in d1.keys(): inner_map = {} # 先处理d1的元素,赋值1 for item in d1[outer_key]: inner_map[item] = 1 # 再处理d2的元素,不存在的键才赋值0,避免覆盖d1的值 for item in d2[outer_key]: if item not in inner_map: inner_map[item] = 0 output[outer_key] = inner_map # 打印验证结果 print(output)
运行结果
运行上述代码得到的输出和期望格式完全一致:
{ 'ad': {'gf': 1, 'tr': 1, 'st': 1, 'te': 0, 'mr': 0, 'lr': 0, 'kr': 0, 'er': 0}, 'ft': {'te': 1, 'gr': 1, 'mf': 1, 'ty': 0, 'yr': 0, 'qf': 0, 'fg': 0, 'jh': 0} }
说明:该实现适配Python 3.7及以上版本(字典默认保留插入顺序),如果使用更早版本,字典键的展示顺序可能和示例有差异,但键值对应关系完全符合规则。
内容的提问来源于stack exchange,提问作者Noorulain Islam
相关产品推荐
相关产品推荐

