为了账号安全,请及时绑定邮箱和手机立即绑定

ChainMap的new_child没成功

from collections import ChainMap

# new_child(map)
user_dict1 = {'a': 'bobby1', 'b': 'bobby2'}
user_dict2 = {'c': 'bobby3', 'd': 'bobby4'}
new_dict = ChainMap(user_dict1, user_dict2)
new_dict.new_child({'aa': 'aa', 'bb': 'bb'})
for key, vaule in new_dict.items():
    print(key, vaule)

https://img1.sycdn.imooc.com/67038dfa0001441f07260271.jpg

使用的是Python3.8

正在回答

1 回答

根据你的描述,你在尝试使用ChainMapnew_child方法来创建一个新的子映射。然而,从你的输出结果来看,似乎并没有成功地添加新的键值对到ChainMap中。

首先,让我们回顾一下ChainMap的工作原理。ChainMap允许你将多个字典链接在一起,形成一个单一的视图。当你访问或修改这个视图时,它会按照链表的顺序查找或更新相应的字典。

现在,我们来看一下你的代码:

from collections import ChainMap

# new_child(map)
user_dict1 = {'a': 'bobby1', 'b': 'bobby2'}
user_dict2 = {'c': 'bobby3', 'd': 'bobby4'}
new_dict = ChainMap(user_dict1, user_dict2)
new_dict.new_child({'aa': 'aa', 'bb': 'bb'})
for key, value in new_dict.items():
    print(key, value)

问题的核心在于你可能误解了new_child方法的作用。new_child方法实际上是在当前ChainMap的基础上创建一个新的ChainMap实例,并将给定的字典作为新实例的第一个映射。这意味着原始的ChainMap不会被改变,而是返回了一个新的ChainMap对象。

因此,你需要将new_child方法的返回值赋值给一个新的变量,然后遍历这个新的ChainMap对象。下面是修复后的代码:

from collections import ChainMap

# new_child(map)
user_dict1 = {'a': 'bobby1', 'b': 'bobby2'}
user_dict2 = {'c': 'bobby3', 'd': 'bobby4'}
new_dict = ChainMap(user_dict1, user_dict2)
new_child_dict = new_dict.new_child({'aa': 'aa', 'bb': 'bb'})  # 将返回的新ChainMap对象赋值给new_child_dict
for key, value in new_child_dict.items():  # 遍历新的ChainMap对象
    print(key, value)

这样,你就可以看到aabb这两个键值对已经被添加到了新的ChainMap对象中。希望这能解决你的问题!

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

ChainMap的new_child没成功

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信