【问题标题】:Hot add the values from one dictionary to another in python在python中将值从一个字典热添加到另一个字典
【发布时间】:2022-07-10 04:17:16
【问题描述】:

我有两本字典。

Dict1={'comp1':{'Company name':'aaa','Industry':'aaa'},'comp2':{'Company name':'bbb','Industry':'bbb'}}
Dict2={'comp2':{'Stock price':200},'comp3':{'Stock price':300},'comp1':{'Stock price':100},'comp4':{'Stock price':400}}

我想从 Dict1 中获取所有键值对,并在第二个字典中找到相应的股票价格。然后我想在第一个字典中添加股票价格数据。你能帮我解决一下python的问题吗?

我想要的输出是:

Dict3={'comp1':{'Company name':'aaa','Industry':'aaa','Stock price':100},'comp2':{'Company name':'bbb','Industry':'bbb','Stock price':200}}

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

    对于python 3.9+,可以使用|

    Dict1 = {'comp1':{'Company name':'aaa','Industry':'aaa'},'comp2':{'Company name':'bbb','Industry':'bbb'}}
    Dict2 = {'comp2':{'Stock price':200},'comp3':{'Stock price':300},'comp1':{'Stock price':100},'comp4':{'Stock price':400}}
    
    output = {k: d | Dict2[k] for k, d in Dict1.items()}
    
    print(output)
    # {'comp1': {'Company name': 'aaa', 'Industry': 'aaa', 'Stock price': 100}, 'comp2': {'Company name': 'bbb', 'Industry': 'bbb', 'Stock price': 200}}
    

    对于 3.9 之前的 python 版本(但仍然是 3.5+),

    output = {k: {**d, **Dict2[k]} for k, d in Dict1.items()}
    

    如果你碰巧有python

    output = {k: d.copy() for k, d in Dict1.items()} # or, copy.deepcopy(Dict1)
    for k, d in output.items():
        d.update(Dict2[k])
    

    如果您对Dict1 的就地修改没问题,那么您不需要复制(第一行)。

    【讨论】:

    • 非常感谢,真的很有帮助!如果在 Dict2 中有一些与 Dict1 中相似的键值对,我该如何修改此代码 (output = {k: dict((*d.items(), *Dict2[k].items())) for k, d 在 Dict1.items()}) 中删除相似的键值,只保留不同的键值对?
    【解决方案2】:

    清除

    dict1 = {'comp1':{'Company name':'aaa','Industry':'aaa'},'comp2':{'Company name':'bbb','Industry':'bbb'}}
    dict2 = {'comp2':{'Stock price':200},'comp3':{'Stock price':300},'comp1':{'Stock price':100},'comp4':{'Stock price':400}}
    dict3 = {}
    
    for k in dict1.keys():
        dict3[k]= {'Company name': dict1[k]['Company name'], 'Industry': dict1[k]['Industry'], 'Stock price': dict2[k]['Stock price']}
    

    【讨论】:

      猜你喜欢
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多