【问题标题】:Combining two dicts into one dict将两个字典组合成一个字典
【发布时间】:2021-05-12 11:27:43
【问题描述】:

我正在尝试将两个 dict 合并为一个,其中键是第一个 dict 值,值是第二个键值。如果其中一个参数不是字典,则 func 需要返回:“输入必须是字典”

例如:

dict1 = {'ZIM': 'Zimbabwe'}
dict2 = {'ZIM': {'Gold': 3, 'Silver': 4, 'Bronze': 1, 'Total': 8}}

我希望得到的输出是:

comb_dict = {'Zimbabwe': {'Gold': 3, 'Silver': 4, 'Bronze': 1, 'Total': 8}}

我尝试以两种不同的方式来做这件事,但没有奏效.. 第一次尝试:

def switch_to_full_name(dict1,dict2):
comb_dict = {}
if isinstance(dict1, dict) and isinstance(dict2, dict):
    keys = dict1.values()
    comb_dict = {k:dict1[v] for k,v in dict2.items() if v in keys}
else:
    return "Input must be a dictionary"
print(comb_dict)

输出如下:

{}
None

我的第二次尝试是这样的:

def switch_to_full_name(dict1,dict2):
comb_dict = {}
if isinstance(dict1, dict) and isinstance(dict2, dict):
    comb_dict[dict1.values()] = comb_dict[dict2.values()]
else:
    return "Input must be a dictionary"
print(comb_dict)

我在输出中得到了这个错误:

KeyError: dict_values([{'Gold': 0, 'Silver': 0, 'Bronze': 2, 'Total': 2},

感谢任何形式的帮助,谢谢!

【问题讨论】:

    标签: python function dictionary


    【解决方案1】:

    所以要从您定义的特定输入中获得预期的输出,您可以这样做:

    dict(zip(dict1.values(), dict2.values()))
    # output => {'Zimbabwe': {'Gold': 3, 'Silver': 4, 'Bronze': 1, 'Total': 8}}
    

    但这确实取决于您的数据结构,请检查。

    【讨论】:

      【解决方案2】:
      dict1 = {'ZIM': 'Zimbabwe'} dict2 = {'ZIM': {'Gold': 3, 'Silver': 4, 'Bronze': 1, 'Total': 8}}
      
      def switch_to_full_name(dict1, dict2):
          comb_dict = {}
          if isinstance(dict1, dict) and isinstance(dict2, dict):
              comb_dict = {list(dict1.values())[0]: value for key, value in dict2.items()}
              return comb_dict
          else:
              return "Input must be a dictionary"
      
      
      
      print(switch_to_full_name(dict1, dict2))
      

      您的一个问题是该函数没有返回组合字典

      【讨论】:

      • 没错,但是如果 dict1 有更多的唯一键和值呢?该函数只返回字典中的第一个键还是我错了?
      • 是的,这个函数只返回字典中的第一个键。
      猜你喜欢
      • 2017-07-23
      • 2012-05-20
      • 2018-10-05
      • 2020-07-29
      • 2022-06-10
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多