python3函数无法连接python字典

时间:2018-09-03 19:06:58

标签: python dictionary

我不断收到空字典

#!/usr/local/bin/python3


dic1={1:10, 2:20}
dic2={3:30, 4:40}
dic3={5:50,6:60}
dictNew = {}


def concatDict(dictCon):
    dictNew = dict.update(dictCon)
    return dictNew


concatDict(dic1)
concatDict(dic2)
concatDict(dic3)

print(dictNew)

dictNew不会从函数调用中更新。

有人可以指出我正确的方向吗?

3 个答案:

答案 0 :(得分:1)

要加入字典,您只需使用以下代码即可:

dict1 = {1: 10, 2: 20}
dict2 = {3: 30, 4: 40}
dict3 = {5: 50, 6: 60}
dict_new = {**dic1, **dic2, **dic3}
print(dict_new)

结果:

{1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60}

答案 1 :(得分:0)

您要使用dictNew字典参数更新dictCon。由于字典是可变的,因此您无需保存或返回结果,因为dictNew将被突变:

#!/usr/local/bin/python3

dic1={1:10, 2:20}
dic2={3:30, 4:40}
dic3={5:50,6:60}
dictNew = {}

def concatDict(dictCon):
    dictNew.update(dictCon)

concatDict(dic1)
concatDict(dic2)
concatDict(dic3)

print(dictNew)

给出:

{1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60}

但是请注意,您的函数实际上只是掩盖dictNew.update,因此您最好使用该方法调用来代替此包装函数:

...
dictNew.update(dic1)
dictNew.update(dic2)
dictNew.update(dic3)
...

另一种方法是使用**运算符来爆炸字典:

{**dic1, **dic2, **dic3}

答案 2 :(得分:0)

您可以使concatDicts函数接受可变数量的字典作为输入并返回新的合并字典。

>>> dic1 = {1:10, 2:20}
>>> dic2 = {3:30, 4:40}
>>> dic3 = {5:50, 6:60}
>>>
>>> def concatDicts(*dicts):
...     return dict((k,v) for dic in dicts for k,v in dic.items())
... 
>>>
>>> new_dic = concatDicts(dic1, dic2, dic3)
>>> print(new_dic)
{1: 10, 2: 20, 3: 30, 4: 40, 5: 50, 6: 60}