我有一个词典列表:
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
这就是灾难开始的地方:
output = generateOutput(list)
输出很好,但是我需要进一步计算的列表,根本不应该具有date_short的列表有一个新密钥,并且是:
list = [ {"id":2, "date": "2018-07-12", "date_short": "Jul-12" }]
如何克服这个问题?
答案 0 :(得分:4)
您正在就地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中预定义类型的名称。
答案 1 :(得分:0)
使用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))