将字典键值添加到另一个字典的所有键

Add dictionary key-values to all keys of another dictionary

我正在尝试将只有一个键的字典的值添加到另一个字典的所有键,但我的字典有不同的键。我想使用循环来执行此操作,因为我的原始字典有 100 多个键。

这里是字典的例子(dict2应该添加到dict1的每个键):

dict1 = {
     'a': 3.84,
     'b': 4.9,
     'c': 6.7}


dict2={'value': {0: 1,
                 1: 6,
                 2: 10,
                 3: 2}}

为澄清起见,dict2 应该只有一个键 ('value')。 dict2 是从 csv 数据框创建的,我试图删除行索引但没有找到方法。

“最终”字典应具有 dict1 和 dict2 的值,但不包含 dict2 的“行索引”。最终字典应如下所示:

dict3 = {
     'a': 3.84,
           1,
           6,
           10,
           2,
     'b': 4.9,
           1,
           6,
           10,
           2,
     'c': 6.7, 
           1,
           6,
           10,
           2 }

我尝试了很多使用 append()、update() 的方法,但都没有用。我也尝试过将 dict2 用作数组,但它也没有用。

感谢您的帮助!

如果你想为每个 dict1 键创建一个列表,你可以使用这个:

dict2_values = dict2["value"].values()
dict3 = {k: [v, *dict2_values] for k, v in dict1.items()}

我们在这里使用了可迭代拆包的特殊语法

l1 = [1,2]
l2 = [3,4]
print([*l1, *l2, 5]) # [1,2,3,4,5]

您必须将 dict3 中每个键的值设为一个列表,因为一个键不能有多个值。这是一个可能的解决方案:

dict1 = {'a': 3.84, 'b': 4.9, 'c': 6.7}
dict2 = {'value': {0: 1, 1: 6, 2: 10, 3: 2}}

def dict_merge(dict1, dict2):
    dict3 = {}
    for key in dict1:
        dict3[key] = [dict1[key]]
        for key2 in dict2["value"]:
            dict3[key].append(dict2["value"][key2])
    return dict3


print(dict_merge(dict1, dict2))

输出:

{'a': [3.84, 1, 6, 10, 2], 'b': [4.9, 1, 6, 10, 2], 'c': [6.7, 1, 6, 10, 2]}