python初始化字典值为列表,需注意避免赋值其中一个但其他值也变化

初始化字典的第一反应是使用dict.fromkeys(),如果value值是int之类的简单值类型没什么问题,但用list初始化则不然。

场景是为dict初始化value值为空的list,可以分别对不同key值对应的value独立操作。

使用dict.fromkeys()初始化得到的字典改动一个value其他的value值也会跟随变化,这是因为后者每个key对应的value值都指向了同一个列表。也就是说,使用dict.fromkeys()初始化,只存在一个被共用的list。

如上可见,用独立空列表快速初始化字典的正确姿势是使用collections.defaultdict()。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们在Python中定义一个类时,可以使用类函数来初始化类的属性。类函数是一个特殊的函数,其第一个参数通常称为"self",它表示类的实例本身。类函数可以访问类的属性和方法,并返回一个。这个返回可以用来初始化类的属性。 例如,我们创建一个名为"Person"的类,该类有一个属性为"name",我们可以使用类函数来初始化这个属性。代码如下: ``` class Person: def __init__(self, name): self.name = name p1 = Person('Tom') print(p1.name) # 输出 Tom ``` 在这个例子中,我们定义了一个名为"__init__"的类函数,在创建类的实例时,我们可以传递一个名字,这个名字会被该函数处理然后赋值给实例的"name"属性。我们创建了一个名为"p1"的"Person"类的实例,并使用"print"函数输出了该实例的"name"属性,输出结果为"Tom"。 如果我们需要在创建类实例时,初始化多个属性,也可以在类函数中返回一个元组或字典初始化这些属性。例如,我们可以扩展上述例子,并在类函数中返回一个包含多个属性的字典初始化这些属性,代码如下: ``` class Person: def __init__(self, name, age): self.name = name self.age = age p1 = Person(**{'name': 'Tom', 'age': 18}) print(p1.name) # 输出 Tom print(p1.age) # 输出 18 ``` 在这个例子中,我们在创建"Person"类的实例时,使用双星号拆解一个字典,将字典的键和作为参数传递给类函数来初始化实例的属性。我们创建了名为"p1"的"Person"类的实例,并使用"print"函数输出了该实例的"name" 和"age" 属性,输出结果分别为"Tom"和"18"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值