簡體   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