我试图提取每个键的第一个值,但它似乎是在迭代这些值,一个一个地迭代,但并不完全是我想要的,它正在做的是:
例如
def budget_options(self):
models = self.shop.get_bicycle_models()
for model, price in zip(self.shop.models.keys(), self.shop.models.values()[0]):
print(model, price)
if price * self.margin <= self.budget:
print("The {} is available for a price of ${:.2f}.".format(model, price * self.margin))
evans_cycles = BicycleShop("Evans Cycles", { "BMC Road Machine": [125, 2], "Cannondale Synapse": [275, 5], "Pinnacle Laterite": [450, 1], "Fuji Transonic": [625, 3], "Cervelo R2": [750, 5], "Specialized Roubaix": [999, 1] })
返回
^{pr2}$当它应该是的时候
('BMC Road Machine', 125)
The BMC Road Machine is available for a price of $150.00.
('Cannondale Synapse', 275)
The Cannondale Synapse is available for a price of $330.00.
如果这是一个愚蠢的问题,我很抱歉,但是我正在学习有思想的Python课程,但是我现在卡住了。在
你的字典没有顺序。这意味着,当您调用
self.shop.models.keys()
和self.shop.models.values()
时,值的返回顺序不一定与键相同,从而导致您描述的意外行为。在这就是^{} 方法出现的地方。它的作用很简单:
您可以在代码中使用它,如下所示:
^{1}$当使用大型词典时,应该使用^{} 。它的工作方式完全相同,但返回生成器而不是在返回之前构建
(key, value)
对的整个列表,从而减少了内存使用。在首先,不是
^{1}$zip(models.keys(), models.values())
,而是models.items()
,它返回一个(key, values)
的元组。在您可能对
values
有更好的描述,但是我不知道列表[125, 2]
代表什么,除了第一项是价格。但这只是吹毛求疵。在相关问题 更多 >
编程相关推荐