带有值列表的Python中的嵌套字典理解

问题描述 投票:0回答:1

我想结合三本词典:

dict_A = {'Archives': '1234',
          'Content Revenue': '4567'}

dict_B = {'Archives': {'Content Partners Draft': '1111',
                       'Revenue Dashboard': '2222',
                       'Customer Lifetime Value Dashboard': '333',
                       'Customer Liftime Value V3': '4444'},
          'Content Revenue': {'License Tracker': '5555',
                              'MONTH_END_PARTNER_REPORT': '6666',
                              'Par': '7777',
                              'Report': '8888',
                              'Impressions': '9999'}}

dict_C = {'Content Partners Draft': {'Content Partner Payout': '1111',
                                     'Device Partner Payments': '1111',
                                     'FirstRights (FirstRights xReference)': '1111',
                                     'Sheet1 (Combined Partner Rev Share & Usage Rev Share)': '1111',
                                     'Sheet1 (Rev Share xReference)': '1111'},
          'Revenue Dashboard': {'Device Breakdown CPM and Fill Rate': '1111',
                                'Device CPM and Fill Rate Targets': '1111',
                                'Platform Breakdown CPM and Fill Rate': '1111',
                                'Platform CPM and Fill Rate Targets': '1111'},
          'Customer Lifetime Value Dashboard': {'LTV Data Source 1-9-2020 Extract': '1111'},
          'Customer Liftime Value V3': {'Customer LTV Data Source': '1111'},
          'License Tracker': {'Sheet1 (Licensing)': '1111'},
          'MONTH_END_PARTNER_REPORT': {'impressions_monthly': '1111', 'kpis_monthly_est': '1111'},
          'Par': {'impressions_monthly': '1111', 'kpis_daily_est': '1111', 'kpis_monthly_est': '1111', 'timelines': '1111'},
          'Report': {'kpis_monthly_est': '1111', 'partner_kpis_prog_hourly (public)': '1111'},
          'Impressions': {'impressions_daily': '1111', 'impressions_monthly': '1111'}}

我尝试将它们与此嵌套的dict理解结合起来:

combined_dict = {
    outer_key : {nested_key : nested_value 
                 for nested_key in dict_B[outer_key]
                 for nested_value in dict_C[nested_key]}
    for outer_key in dict_A}

我得到这个结果:

{'Archives': {'Content Partners Draft': 'Sheet1 (Rev Share xReference)',
              'Customer Lifetime Value Dashboard': 'LTV Data Source 1-9-2020 '
                                                   'Extract',
              'Customer Liftime Value V3': 'Customer LTV Data Source',
              'Revenue Dashboard': 'Platform CPM and Fill Rate Targets'},
 'Content Revenue': {'Impressions': 'impressions_monthly',
                     'License Tracker': 'Sheet1 (Licensing)',
                     'MONTH_END_PARTNER_REPORT': 'kpis_monthly_est',
                     'Par': 'timelines',
                     'Report': 'partner_kpis_prog_hourly (public)'}}

结果成功地合并了dict_A和dict_B的值,但仅包含dict_C的一个值。是否可以将值列表(键)作为嵌套字典理解中的值?

谢谢!

我的预期输出将包括完整的键列表作为嵌套值:

{'Archives': {'Content Partners Draft': ['Content Partner Payout', 'Device Partner Payments', 'FirstRights (FirstRights xReference)', 
                                         'Sheet1 (Combined Partner Rev Share & Usage Rev Share)', 'Sheet1 (Rev Share xReference)'],
              'Customer Lifetime Value Dashboard': ['LTV Data Source 1-9-2020 Extract'],
              'Customer Liftime Value V3': ['Customer LTV Data Source'],
              'Revenue Dashboard': ['Device Breakdown CPM and Fill Rate', 'Device CPM and Fill Rate Targets', 'Platform Breakdown CPM and Fill Rate', 
                                    'Platform CPM and Fill Rate Targets']}
{'Content Revenue': {'Impressions': ['impressions_daily', 'impressions_monthly'],
                     'License Tracker': ['Sheet1 (Licensing)'],
                     'MONTH_END_PARTNER_REPORT': ['impressions_monthly', 'kpis_monthly_est'],
                     'Par': ['impressions_monthly', 'kpis_daily_est', 'kpis_monthly_est', 'timelines'],
                     'Report': ['kpis_monthly_est', 'partner_kpis_prog_hourly (public)']}}
python dictionary data-structures nested dictionary-comprehension
1个回答
0
投票

您可以使用:

combined_dict =  {
    outer_key : {nested_key : list(dict_C[nested_key].keys())
                 for nested_key in dict_B[outer_key]}
    for outer_key in dict_A}

输出:

{'Archives': {'Content Partners Draft': ['Content Partner Payout',
   'Device Partner Payments',
   'FirstRights (FirstRights xReference)',
   'Sheet1 (Combined Partner Rev Share & Usage Rev Share)',
   'Sheet1 (Rev Share xReference)'],
  'Revenue Dashboard': ['Device Breakdown CPM and Fill Rate',
   'Device CPM and Fill Rate Targets',
   'Platform Breakdown CPM and Fill Rate',
   'Platform CPM and Fill Rate Targets'],
  'Customer Lifetime Value Dashboard': ['LTV Data Source 1-9-2020 Extract'],
  'Customer Liftime Value V3': ['Customer LTV Data Source']},
 'Content Revenue': {'License Tracker': ['Sheet1 (Licensing)'],
  'MONTH_END_PARTNER_REPORT': ['impressions_monthly', 'kpis_monthly_est'],
  'Par': ['impressions_monthly',
   'kpis_daily_est',
   'kpis_monthly_est',
   'timelines'],
  'Report': ['kpis_monthly_est', 'partner_kpis_prog_hourly (public)'],
  'Impressions': ['impressions_daily', 'impressions_monthly']}}
© www.soinside.com 2019 - 2024. All rights reserved.