【问题标题】:Union of two dictionaries of lists [duplicate]两个列表字典的并集[重复]
【发布时间】:2021-05-03 21:48:14
【问题描述】:

我想根据两个现有字典创建一个新的列表字典

输入

dic1 = {'A' :['1','2','3'] , 'B' :['2','3','4'] ,'C' :['5','6','7']}
dic2 = {'A' :['1','2','5'] , 'B' :['5','6','7'] ,'D' :['1','2','3']}

输出

dic3 =  {'A' :['1','2','3','5'] , 'B' :['2','3','4','5','6','7'] ,'C':['5','6','7'],'D':['1','2','3']}

我尝试了什么

dic3 = {key: value + dic2[key] for key, value in dic1.items()}

你能帮我找到dic3吗?我在dic1 中遇到'C' 密钥错误。

【问题讨论】:

  • 你尝试过使用集合吗?
  • 是的,这里是:z = { key:x.get(key,[])+y.get(key,[]) for key in set(list(x.keys()) +list(y.keys())) } 我在列表中得到重复值
  • 列表中项目的顺序重要吗?
  • 没有..但我不需要列表中的重复值

标签: python dictionary


【解决方案1】:

如果内部列表中的项目顺序不重要:

dic3 = {
    key: list(set(dic1.get(key, []) + dic2.get(key, [])))
    for key in dic1.keys() | dic2.keys()
}
print(dic3)

打印:

{'C': ['7', '5', '6'], 'D': ['1', '3', '2'], 'A': ['1', '3', '5', '2'], 'B': ['2', '6', '7', '5', '4', '3']}

【讨论】:

    【解决方案2】:

    使用方法.get 提取值。当键不在字典中时它不会失败:

    {key: list(set(dict1.get(key,[])+dict2.get(key,[])))
        for key in set(dict1)|set(dict2)}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-12
      • 2019-01-05
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多