Python.values()[0]在字典中提取列表的第一个值

2024-05-28 23:04:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图提取每个键的第一个值,但它似乎是在迭代这些值,一个一个地迭代,但并不完全是我想要的,它正在做的是:

例如

    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课程,但是我现在卡住了。在


Tags: oftheselfformodelismodelsmachine
2条回答

你的字典没有顺序。这意味着,当您调用self.shop.models.keys()self.shop.models.values()时,值的返回顺序不一定与键相同,从而导致您描述的意外行为。在

这就是^{}方法出现的地方。它的作用很简单:

Return a copy of the dictionary’s list of (key, value) pairs.

您可以在代码中使用它,如下所示:

^{1}$

当使用大型词典时,应该使用^{}。它的工作方式完全相同,但返回生成器而不是在返回之前构建(key, value)对的整个列表,从而减少了内存使用。在

首先,不是zip(models.keys(), models.values()),而是models.items(),它返回一个(key, values)的元组。在

^{1}$

您可能对values有更好的描述,但是我不知道列表[125, 2]代表什么,除了第一项是价格。但这只是吹毛求疵。在

相关问题 更多 >

    热门问题