繁体   English   中英

我想使用字典理解或 for 循环清理嵌套字典 python

[英]I want to clean a nested dictionary python using dictionary comprehension or for loops

我有一个嵌套字典,其中包含一系列键 Dictionary_ABC = {'ABC 1':..., 'ABC 2': ..., ..., 'ABC N':...}。 这些密钥中的每一个都包含不与 ABC 密钥相关联的随机值,但也包含其他与 ABC 密钥相关联的随机值。 例如:

Dictionary_ABC['ABC 1'] = {'ABC 1': {'ZYZZ': NONE, 'DAFDZ': NONE, 'EASDF': NONE, 'ABC 1': NONE, ..., 'ABC N': NONE}}

在子字典“ABC 1”中,我想删除所有不包含“ABC 1”的 ABC 值。 所以最终的结果应该是这样的:

Dictionary_ABC['ABC 1'] = {'ABC 1': {'ZYZZ': NONE, 'DAFDZ': NONE, 'EASDF': NONE, 'ABC 1': NONE}}

所有其他 ABC # 都应该脱落,我只剩下其他子键和与主键匹配的子键。

我尝试了许多不同的解决方案,但似乎产生最接近结果的一种是:

Dictionary_ABC_Copy = {}
for key in Dictionary_ABC:
   for subkey in Dictionary_ABC[key]:
       if this criteria met:
           if this next criteria met:
                pass #I don't want to copy this
           else:
                Dictionary_ABC_Copy[key] = subkey #copy if it doesn't fit both criteria
        else:
            Dictionary_ABC_Copy[key] = subkey #because I want to copy this
       

标准正在产生必要的结果,但是每当我尝试更新字典或使用上述方法时,字典都会覆盖所有以前的值。 如果它们没有传递给过滤条件,我只想用这些值更新键。 这是我的第一个问题。

我的第二个问题有没有更好的方法来做到这一点? 我希望我已经为材料提供了帮助回答这些问题所需的信息。

谢谢。

我想你想要这样的东西:

dictionary_abc_copy = {
   abc: {k: v for k, v in inner.items() if not k.startwith('ABC ') or k == abc}
   for abc, inner in dictionary_abc.items()
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM