我正在尝试以下
def myfunction(list_a, list_b, my_dict):
dict1 = dict(zip(list_a, list_b))
my_dict = copy.deepcopy(dict1)
但是当我打电话给myfunction时,我会得到一本emtpty词典......
答案 0 :(得分:2)
def myfunction(list_a, list_b):
dict1 = dict(zip(list_a, list_b))
return copy.deepcopy(dict1)
my_dict = myfunction(some_list_a, some_list_b)
正如MaxNoe所注意到的那样 - 不需要深度扫描
def myfunction(list_a, list_b):
return dict(zip(list_a, list_b))
my_dict = myfunction(some_list_a, some_list_b)
甚至
my_dict = dict(zip(some_list_a, some_list_b))
答案 1 :(得分:2)
如果你想让它成为一个函数,你应该只是简单地返回dict。无需提供字典或制作deepcopy
:
def dict_from_lists(keys, vals):
return dict(zip(keys, vals))
my_dict = dict_from_lists(list_a, list_b)
但是对于仅使用内置函数的一行代码,我通常不会编写函数。
在我看来
my_dict = dict(zip(list_a, list_b))
是pythonic,它不需要隐藏正在发生的事情的用户函数。
答案 2 :(得分:0)
对象通过引用的值传递,因此为函数中的参数赋值新值不会更改传递给它的对象引用的值。
我建议改回副本。
def myfunction(list_a, list_b):
dict1 = dict(zip(list_a, list_b))
return copy.deepcopy(dict1)