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

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

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

慕无忌1623718 2022-07-19 16:39:07
我有两个字典: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'}我也可能想使用与初始字典名称相同的新字典键
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

您的主要问题是您试图跨越字符串值和变量名之间的实现边界。这几乎总是糟糕的设计。相反,从所有标签作为字符串数据开始:


table = {

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

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

}

...或者,就您的原始帖子而言:


table = {

    "dict1": dict1,

    "dict2": dict2

}

从这里,您应该能够反转级别以获得


invert = {

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

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

}

这足以让您的处理到达需要的地方吗?将数据保存在这样的综合字典中,将更容易根据需要迭代子字典。


查看完整回答
反对 回复 2022-07-19
?
烙印99

TA贡献1829条经验 获得超13个赞

正如@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():

    inner_dict = {}


    for i, v2 in enumerate(v1, start=1):

        inner_dict["dict%d" % i] = v2


    result[k] = inner_dict

注意:这假设您希望始终保持"dict1"、"dict2"、... 键结构。


查看完整回答
反对 回复 2022-07-19
  • 2 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号