python3 Функция для конкатенации словарей Python не работает - PullRequest
0 голосов
/ 03 сентября 2018

я получаю пустой словарь

#!/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 голосов
/ 03 сентября 2018

Для присоединения к словарям вы можете просто использовать этот код:

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}
0 голосов
/ 03 сентября 2018

Вы можете заставить вашу функцию concatDicts принимать переменное число dict в качестве входных данных и возвращать новый объединенный dict

>>> 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}
0 голосов
/ 03 сентября 2018

Вы хотите обновить 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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...