我有两套词典.让我们称它们为A和B.我需要能够创建第三个字典C,它具有A的所有键和关联值,但B中的对除外.这是我到目前为止try 的内容:

A = {"A": {"B": 6, "C": 5}, "B": {"A": 6, "D": 7, "E": 5}, "C": {"A": 5}, "D": {"B": 7, "E": 10, "H": 25},
     "E": {"D": 10, "F": 14, "B": 5}, "F": {"E": 14}, "H": {"D": 25}}
B = {"A": "C"}

C = A

for key, value in A.items():
     C.update({key: value})
     if key in B:
          for i in value:
               if i not in B.values():
                    C[key].pop(i)

print(C)

这个 idea 是,在给定两个词典的情况下,获得输出:

A = {"A": {"B": 6}, "B": {"A": 6, "D": 7, "E": 5}, "C": {"A": 5}, "D": {"B": 7, "E": 10, "H": 25}, "E": {"D": 10, "F": 14, "B": 5}, "F": {"E": 14}, "H": {"D": 25}}

取而代之的是,终端返回一个错误,说明字典在迭代期间改变了大小.我到底做错了什么?

推荐答案

您可以使用词典理解:

A = {
    "A": {"B": 6, "C": 5},
    "B": {"A": 6, "D": 7, "E": 5},
    "C": {"A": 5},
    "D": {"B": 7, "E": 10, "H": 25},
    "E": {"D": 10, "F": 14, "B": 5},
    "F": {"E": 14},
    "H": {"D": 25},
}
B = {"A": "C"}

C = {
    k: {kk: vv for kk, vv in v.items() if not (k in B and B[k] == kk)}
    for k, v in A.items()
}
print(C)

打印:

{
    "A": {"B": 6},
    "B": {"A": 6, "D": 7, "E": 5},
    "C": {"A": 5},
    "D": {"B": 7, "E": 10, "H": 25},
    "E": {"D": 10, "F": 14, "B": 5},
    "F": {"E": 14},
    "H": {"D": 25},
}

Python相关问答推荐

修剪Python框架中的尾随NaN值

OdooElectron 商务产品详情页面中add_qty参数动态更新

隐藏QComboBox的指示器(qdarkstyle)

如何使用函数正确索引收件箱?

如何计算部分聚合数据的统计数据

除了Python之外,可以替代bare?

KNN分类器中的GridSearchCV

将轨迹优化问题描述为NLP.如何用Gekko解决这个问题?当前面临异常:@错误:最大方程长度错误

如何用symy更新分段函数

将HTML输出转换为表格中的问题

如何从FDaGrid实例中删除某些函数?

在函数内部使用eval(),将函数的输入作为字符串的一部分

具有多个选项的计数_匹配

SQLGory-file包FilField不允许提供自定义文件名,自动将文件保存为未命名

使用miniconda创建环境的问题

运输问题分支定界法&

如何在Python中使用Pandas将R s Tukey s HSD表转换为相关矩阵''

dask无groupby(ddf. agg([min,max])?''''

ConversationalRetrivalChain引发键错误

在代码执行后关闭ChromeDriver窗口