Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按值传递变量_Python_Reference_Variable Assignment_Key Value - Fatal编程技术网

Python 按值传递变量

Python 按值传递变量,python,reference,variable-assignment,key-value,Python,Reference,Variable Assignment,Key Value,我有一份字典清单: 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 这里是de

我有一份字典清单:

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" }]

如何克服这个问题?

您正在修改
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中预定义类型的名称。

您正在修改
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中预定义类型的名称。

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

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

把名单复印一份?我不明白。如果输出正常,有什么问题?如果您不希望输出具有日期短键,为什么要执行
l['date\u short']=“Jul-12”
?您能否提供一个示例,说明所需输出与实际输出有何不同?您可以传递列表的副本:output=generateOutput(list[:])>有什么问题?这只是为了演示。我需要一个包含保留在核心模块中的原始数据的列表,以及一个发送到输出应用程序的列表。>您可以传递列表的副本:output=generateOutput(list[:])no。小心点,这不起作用。在这种情况下,切片似乎不起作用(字典列表)。把名单复印一份?我不明白。如果输出正常,有什么问题?如果您不希望输出具有日期短键,为什么要执行
l['date\u short']=“Jul-12”
?您能否提供一个示例,说明所需输出与实际输出有何不同?您可以传递列表的副本:output=generateOutput(list[:])>有什么问题?这只是为了演示。我需要一个包含保留在核心模块中的原始数据的列表,以及一个发送到输出应用程序的列表。>您可以传递列表的副本:output=generateOutput(list[:])no。小心点,这不起作用。在这种情况下,切片似乎不起作用(字典列表)。谢谢你,我能行。“列表”:谢谢你的好提示(只在这里使用,而不是在原始代码中使用)完成了这项工作,谢谢。“列表”:感谢您的提示(仅在此处使用,不在原始代码中使用)