Функция Python3 для отображения списков в словарь - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть этот блок кода:


dict1 = ['aa','bb','cc','dd']
dict2 = ['11','22','33','44']
newDict = {}

def map_lists(Dict1, Dict2):
    newDict=dict(zip(dict1, dict2))
    print(newDict)


map_lists(dict1, dict2)

print(newDict)

Я хочу обновить словарь "newDict", но я могу только добраться до функции, чтобы распечатать отображение изнутри функции.

Кто-нибудь может заметить мою ошибку?

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Я бы сделал это так:

dict1 = ['aa','bb','cc','dd']
dict2 = ['11','22','33','44']

def map_lists(Dict1, Dict2):
    newDict = {}
    newDict=dict(zip(dict1, dict2))
    return newDict

newDict = map_lists(dict1, dict2)

print(newDict)
0 голосов
/ 16 сентября 2018

Вам нужно return от функции.

Когда вы выполняете newDict = dict(zip(dict1, dict2)) внутри функции, создается новый словарь, область действия которого является локальной для функции и недоступна извне.

Если вы, скорее всего, будете использовать этот словарь вне функции, предложенный способ - вернуть новый словарь вызывающей стороне, как только функция будет выполнена.

dict1 = ['aa','bb','cc','dd']
dict2 = ['11','22','33','44']

def map_lists(Dict1, Dict2):
    newDict = dict(zip(dict1, dict2))
    return newDict

newDict = map_lists(dict1, dict2)
print(newDict)


Или,есть еще один способ, который я не буду рекомендовать, но только к вашему сведению.
dict1 = ['aa','bb','cc','dd']
dict2 = ['11','22','33','44']

def map_lists(Dict1, Dict2):
    global newDict
    newDict=dict(zip(dict1, dict2))

map_lists(dict1, dict2)
print(newDict)

global не рекомендуется использовать, поскольку это не очень хорошая практика программирования на любом языке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...