如何将多个字典中的数据与重复键合并?

我有两个字典:


dict1 = {'a': '2', 'b': '10'}

dict2 = {'a': '25', 'b': '7'}

我需要将同一键的所有值保存在新字典中。


到目前为止我能做的最好的是:defaultdict(<class 'list'>, {'a': ['2', '25'], 'b': ['10', '7']})


dd = defaultdict(list)

for d in (dict1, dict2):

    for key, value in d.items():

        dd[key].append(value)

print(dd)

这并不能完全解决问题,因为理想的结果是:


a = {'dict1':'2', 'dict2':'25'}

b = {'dict2':'10', 'dict2':'7'}

我也可能想使用与初始字典名称相同的新字典键


慕无忌1623718
浏览 215回答 2
2回答

Helenr

您的主要问题是您试图跨越字符串值和变量名之间的实现边界。这几乎总是糟糕的设计。相反,从所有标签作为字符串数据开始:table = {&nbsp; &nbsp; "dict1": {'a': '2',&nbsp; 'b': '10'},&nbsp; &nbsp; "dict2": {'a': '25', 'b': '7'}}...或者,就您的原始帖子而言:table = {&nbsp; &nbsp; "dict1": dict1,&nbsp; &nbsp; "dict2": dict2}从这里,您应该能够反转级别以获得invert = {&nbsp; &nbsp; "a": {'dict1': '2',&nbsp; 'dict2': '25'},&nbsp; &nbsp; "b": {'dict2': '10', 'dict2': '7'}}这足以让您的处理到达需要的地方吗?将数据保存在这样的综合字典中,将更容易根据需要迭代子字典。

烙印99

正如@Prune建议的那样,将结果构建为嵌套字典会更容易:{'a': {'dict1': '2', 'dict2': '25'}, 'b': {'dict1': '10', 'dict2': '7'}}这可以通过dict理解来实现:{k: {"dict%d" % i: v2 for i, v2 in enumerate(v1, start=1)} for k, v1 in dd.items()}如果您更喜欢在没有理解的情况下这样做,您可以这样做:result = {}for k, v1 in dd.items():&nbsp; &nbsp; inner_dict = {}&nbsp; &nbsp; for i, v2 in enumerate(v1, start=1):&nbsp; &nbsp; &nbsp; &nbsp; inner_dict["dict%d" % i] = v2&nbsp; &nbsp; result[k] = inner_dict注意:这假设您希望始终保持"dict1"、"dict2"、... 键结构。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python