繁体   English   中英

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

[英]Is it possible to create a dictionary inside a function using python?

我正在尝试以下

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

但是当我调用myfunction时,我得到了一个空字典...

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所注意到的-不需要Deepcopy

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

如果要使其成为函数,则只需返回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的,它不需要隐藏正在发生的事情的用户函数。

对象是通过引用的值传递的,因此在函数内为参数分配新值不会更改传递给它的对象引用的值。

我建议退回副本。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM