按值传递变量

2024-05-12 17:51:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一份字典清单:

list = [{"id":2, "date": "2018-07-12"}]

现在我想生成一些很好的输出,并为其提供一个函数:

def generateOutput(myList):  
   outputList = []        
   for l in myList:            
      l['date_short'] = "Jul-12"
   outputList.append(l)

   return outputList

这里是desaster的起点:

output = generateOutput(list)

输出是好的,但我需要进一步计算的列表,不应该有一个新的关键是一个短的日期,是:

list = [ {"id":2, "date": "2018-07-12", "date_short": "Jul-12" }]

如何克服这个问题


Tags: 函数inidfordatereturn字典def
2条回答

使用copy模块将变量的副本传递给函数

import copy

list = [{"id":2, "date": "2018-07-12"}] 

def generateOutput(myList):  
   outputList = []        
   for l in myList:            
      l['date_short'] = "Jul-12"
   outputList.append(l)

   return outputList

generateOutput(copy.copy(list))

您正在修改myList中的词典。相反,您可能希望在向它们添加新值之前单独复制它们。试试这个:

def generateOutput(myList):
    outputList = []
    for l in myList:
        output = l.copy()
        output['date_short'] = "Jul-12"
        outputList.append(output)
    return outputList

另外,应该避免命名变量list,因为list是Python中预定义类型的名称

相关问题 更多 >