是否可以使用python在函数内创建字典?

时间:2015-11-18 22:01:52

标签: python

我正在尝试以下

def myfunction(list_a, list_b, my_dict):
   dict1 = dict(zip(list_a, list_b))
   my_dict = copy.deepcopy(dict1)

但是当我打电话给myfunction时,我会得到一本emtpty词典......

3 个答案:

答案 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)