List 从字典中的列表中删除元素

List 从字典中的列表中删除元素,list,dictionary,del,List,Dictionary,Del,这: 给出了: {1:[1,2,3,4],2:[1,2,3,4],3:[1,2,3,4]} {1:[1,2,4],2:[1,2,3,4],3:[1,2,3,4]} 这正是我所期望的,但是: deck = {1:[1,2,3,4], 2:[1,2,3,4], 3:[1,2,3,4]} print(deck) del deck[1][2] print(deck) 给出了: {1:[1,2,3,4],2:[1,2,3,4],3:[1,2,3,4]} {1:[1,2,4],2:[1,2,4],

这:

给出了:

{1:[1,2,3,4],2:[1,2,3,4],3:[1,2,3,4]}

{1:[1,2,4],2:[1,2,3,4],3:[1,2,3,4]}

这正是我所期望的,但是:

deck = {1:[1,2,3,4], 2:[1,2,3,4], 3:[1,2,3,4]}    
print(deck)
del deck[1][2]
print(deck)
给出了:

{1:[1,2,3,4],2:[1,2,3,4],3:[1,2,3,4]}

{1:[1,2,4],2:[1,2,4],3:[1,2,4]}

如您所见,del关键字删除每个键值的索引2,而不仅仅是键值1。
抱歉,如果这是显而易见的,我正在学习并被它弄糊涂。

dict中的每个元素都引用了相同的列表。因此,当您从其中一个列表中删除一个元素时,它通过所有列表都是可见的(因为,如上所述,它们实际上是同一个列表!)

相反,dict的每个元素都应具有不同的列表副本:

适用于范围内的i(透镜(甲板)):
甲板[i+1]=套装[:]
旁注:
这个循环可以被一个更“pythonic”的dict理解所取代:

deck={i:suit[:]对于范围(1,4)内的i}

dict中的每个元素都引用相同的列表。因此,当您从其中一个列表中删除一个元素时,它通过所有列表都是可见的(因为,如上所述,它们实际上是同一个列表!)

相反,dict的每个元素都应具有不同的列表副本:

适用于范围内的i(透镜(甲板)):
甲板[i+1]=套装[:]
旁注:
这个循环可以被一个更“pythonic”的dict理解所取代:

deck={i:suit[:]对于范围(1,4)内的i}

因此我需要复制内容,而不是列表本身。这很有效。谢谢Mureinik所以我需要复制内容而不是列表本身。这很有效。谢谢Mureinik
deck = {1:None, 2:None, 3:None}
suit =[1,2,3,4]
for i in range(len(deck)):
deck[i+1] = suit      
print(deck)
del deck[1][2]
print(deck)