解决痘坑的最好办法,祛痘坑有什么办法
python dict.fromkeys方法的坑
今天在排查病菌的时候踩了一个dict.fromkeys方法的坑,xhdbl一下。业务逻辑中有一段用到了dict.fromkeys创建初始值为空列表的字典,之后根据不同键更新列表内容,类似下面的示例:
#!/usr/mdxn/env python
# -*-编码:utf-8 -*-
class_list=[class01 , class 02 , class03]
total _ info=dictfrom keys(class _ list,[teacher_wang])
print(total _ info)# { class 01 :[ teacher _ Wang ], calss02: [teacher_wang], class03: [teacher_wang]}
对于键,total_info.items()中的值:
打印(id(值))
# 创建的总计_信息的价值值指向同一块内存空间,这就有些类似浅拷贝了
总计信息.追加(“学生_李华”)
print(total _ info)# { class 01 :[ teacher _ Wang , student_lihua], calss02: [teacher_wang , student_lihua], class03: [teacher_wang , student_lihua]}
如何解决这个方法?使用字典生成表达式来初始化字典值为空列表的字典,如下:
#!/usr/mdxn/env python
# -*-编码:utf-8 -*-
class_list=[class01 , class 02 , class03]
total _ info={ key:[]for key in class _ list }
总计信息.追加(老师_王)
print(total _ info)# { class 01 :[ teacher _ Wang ], calss02: [], class03: []}