如何找到字典的最大值

2024-09-29 22:31:51 发布

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

假设我这里有本词典:

stock_price = { 'AAPL' : [100,200,100.3,100.55,200.33],
                'GOOGL': [100.03,200.11,230.33,100.20],
                'SSNLF': [100.22,150.22,300,200,100.23],
                'MSFT' : [100.89,200,100,500,200.11,600]}

列表中的每个值都来自特定的时间段。(即100代表AAPL股票,100.03代表GOOGL股票,100.03代表期间1,100.3代表AAPL股票,150.22代表SSNLF股票,是第2期,依此类推)。在

所以我在这里创建了一个函数,它可以帮助我找到某个时间段内的最高股价。在

^{pr2}$

我的目标是输入周期,使函数看起来最大([periods]),以便找到该时间段的最高股价。在

预期结果示例应如下所示:

maximum([0, 1])

[100.89, 200.11]

这表明100.89是所有股票中第一期的最高价格,200.11是第二期的最高价格。在


Tags: 函数列表stock代表价格price股票时间段
2条回答

我相信你在找这样的东西:

stock_price = { 'AAPL' : [100,200,100.3,100.55,200.33],
            'GOOGL': [100.03,200.11,230.33,100.20],
            'SSNLF': [100.22,150.22,300,200,100.23],
            'MSFT' : [100.89,200,100,500,200.11,600]}

def maximum(*args):
   for column in args:
       yield max(list(zip(*stock_price.values()))[column])
print(list(maximum(0, 1)))

输出:

^{pr2}$

通过使用*args,您可以指定任意多个列:

print(list(maximum(0, 1, 2, 3)))

输出:

[100.89, 200.11, 300, 500]

您可以使用dict.values来迭代字典值。使用列表理解/生成器表达式获取值外的句点值;使用^{}获取最大值:

# 1st period (0) prices
>>> [prices[0] for prices in stock_price.values()]
[100, 100.03, 100.89, 100.22]

# To get multiple periods prices
>>> [[prices[0] for prices in stock_price.values()],
     [prices[1] for prices in stock_price.values()]]
[[100, 100.03, 100.89, 100.22], [200, 200.11, 200, 150.22]]
>>> [[prices[0] for prices in stock_price.values()] for period in [0, 1]]
[[100, 100.03, 100.89, 100.22], [100, 100.03, 100.89, 100.22]]

>>> max([100, 100.03, 100.22, 100.89])
100.89

^{pr2}$

相关问题 更多 >

    热门问题