python 构造函数重置_python - 使用其构造函数初始化OrderedDict的正确方法,以便保留初始数据的顺序?...

初始化有序字典(OD)以保持初始数据顺序的正确方法是什么?

from collections import OrderedDict

# Obviously wrong because regular dict loses order

d = OrderedDict({'b':2, 'a':1})

# An OD is represented by a list of tuples, so would this work?

d = OrderedDict([('b',2), ('a', 1)])

# What about using a list comprehension, will 'd' preserve the order of 'l'

l = ['b', 'a', 'c', 'aa']

d = OrderedDict([(i,i) for i in l])

题:

OrderedDict是否会保留元组列表的顺序,或者在初始化时传递的元组元组或元组元组或列表列表等(上面的第2和第3例)?

如何验证OrderedDict是否实际维护订单? 由于dict具有不可预测的顺序,如果我的测试向量幸运地具有与dict的不可预测顺序相同的初始顺序,该怎么办? 例如,如果我写d = OrderedDict({'a':1, 'b':2})而不是d = OrderedDict({'b':2, 'a':1}),我可能错误地断定订单被保留。 在这种情况下,我发现dict按字母顺序排序,但可能并非总是如此。 使用反例来验证数据结构是否保留顺序的可靠方法是什么,没有重复尝试测试向量直到中断?

附: 我将这里留下来作为参考:“OrderedDict构造函数和update()方法都接受关键字参数,但它们的顺序丢失,因为Python的函数使用常规无序字典调用语义传入关键字参数”

P.P.S:希望将来,OrderedDict也能保留kwargs的顺序(例1):[http://bugs.python.org/issue16991]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的汽车类的示例代码: ```python class Car: def __init__(self, color, brand, license_plate): self.color = color self.brand = brand self.license_plate = license_plate self.energy = 100 # 能量值默认为100 def drive(self): self.energy -= 10 def recharge(self): self.energy = 100 def play_music(self): print("Playing music...") def turn_on_air_conditioner(self): print("Turning on air conditioner...") def run(self): self.drive() # 驱动 if self.energy < 10: self.recharge() # 能量低于10,补充能量 self.play_music() # 播放音乐 self.turn_on_air_conditioner() # 开空调 ``` 在上面的代码中,我们定义了一个名为Car的类,它有三个属性:颜色(color)、品牌(brand)和车牌号(license_plate),以及一个构造函数(__init__),用于初始化这些属性。除此之外,我们还定义了一个抽象方法drive(),一个成员方法recharge(),一个成员方法play_music(),以及一个成员方法turn_on_air_conditioner()。 在抽象方法drive()中,我们将能量值energy减少10,表示汽车在行驶过程中消耗了一定的能量。在成员方法recharge()中,我们将能量值energy为100,表示汽车得到了充电能量的补充。在成员方法play_music()中,我们简单地打印一条消息,表示播放音乐。在成员方法turn_on_air_conditioner()中,我们也简单地打印一条消息,表示开启了空调。 最后,我们定义了一个成员方法run(),它调用了抽象方法drive()、成员方法recharge()、成员方法play_music()和成员方法turn_on_air_conditioner()。这个方法表示汽车的一次完整行驶过程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值