2016-12-16 41 views
3

我有一個列表,其每個元素是一個字典。 每個元素看起來像這樣Python:如何深度複製字典列表

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

我需要這個list.Normal分配的備份或使用淺拷貝不選擇我可以用我將在更改原始。 但是當我使用deepcopy的 backUpNames=deepcopy(oldNames) 我得到一個錯誤:

TypeError: unhashable type: 'array.array'

錯我在這裏幹什麼?我該如何解決這個問題?

這是不是一個重複的問題,因爲我已經使用deepcopy,我面臨的問題是與deepcopy正在拋出的錯誤。

最少的代碼:

使用openpxl我迭代板和值追加到列表

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 

謝謝

+0

請提供[mcve]。 – TigerhawkT3

+0

@MoinuddinQuadri - 這根本不是重複的。 OP正在使用'copy.deepcopy',並且出現錯誤。 – TigerhawkT3

+1

這不會給語法錯誤? '' – MYGz

回答

-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

這裏有什麼意思? OP說他知道如何使用'deepcopy',他有一個特定的問題,對此一點幫助。 – Fejs

+0

我仍然得到相同的錯誤TypeError:不可取的類型:'array.array'。 –

0

我認爲這將解決問題:

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

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

我想,你不能在這裏使用的細胞爲研究對象,而只是它的價值。