说我有以下字典
{'g_g': {'cube': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j]),
'factorization': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j]),
'renormalization': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j]),
'square': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j])},
'q_g': {'12': {'cube': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j]),
'factorization': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j]),
'renormalization': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j]),
'square': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j])},
'21': {'cube': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j]),
'factorization': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j]),
'renormalization': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j]),
'square': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j])}},
'q_q': {'cube': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j]),
'factorization': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j]),
'renormalization': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j]),
'square': array([1.+3.j, 2.+4.j, 3.+5.j, 4.+6.j])}}
如何复制字典的所有键并将最里面的值设置为None
?各地的结构都不尽相同,因此很难为其编写一个统一的循环。我知道deepcopy
可以做到,但它也会复制值。
谢谢!
答案 0 :(得分:2)
如果要删除字典的数组部分,可以在使用deepcopy
之后使用以下内容。
# Suppose ar is the dictionary you get after using deepcopy
def func(ar):
for i in ar:
if type(ar[i]) != dict:
ar[i] = None
else:
func(ar[i])