Python:如何深度复制字典列表

时间:2016-12-16 06:11:13

标签: python dictionary

我有一个列表,其中每个元素都是一个字典。 每个元素看起来都像这样

{'CELL': <Cell SOW16007.2.AC7>, 'COUNT': 2, 'NAMELIST': [], 'NAME': u'', 'LEVEL': u'SSE'}

我需要对此列表进行备份。正常分配或使用浅拷贝不是我可以使用的选项,因为我将对原始进行更改。 但是当我使用deepcopy时 backUpNames=deepcopy(oldNames) 我收到了一个错误:

TypeError: unhashable type: 'array.array'

我在这做什么错?我该如何解决这个问题?

这是一个不重复的问题,因为我已经使用了深度复制,我面临的问题是深度复制正在抛出错误。

最小代码:

使用openpxl i迭代工作表并将值附加到列表

wb=openpyxl.load_workbook(sys.argv[3],data_only=True)
_ts=wb.active 
oldNames.append({'NAME':_ts['G7'].value,'LEVEL':_ts['H7'].value,'CELL':_ts['F7'],'COUNT':0,'NAMELIST':[]})
backUpNames=deepcopy(oldNames)#error occurring here

谢谢

2 个答案:

答案 0 :(得分:1)

import copy
list = [{'a':1,'b':2},{'c':3,'d':4}]
cpy_list = []
for li in list:
    d2 = copy.deepcopy(li)
    cpy_list.append(d2)
print cpy_list

答案 1 :(得分:0)

我认为这样可以解决问题:

oldNames.append({'NAME':_ts['G7'].value,'LEVEL':_ts['H7'].value,'CELL':_ts['F7'].value,'COUNT':0,'NAMELIST':[]})

请注意此key/value对:'CELL':_ts['F7'].value

我想你不能在这里使用cell作为对象,而只是它的值。

相关问题