获取列表中具有特定子字符串的元素的索引

2024-09-28 01:26:11 发布

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

所以我正在构建一个股票搜索项目,我正在寻找包含全名子字符串的股票名称的股票代码。你知道吗

例如,将Apple作为stockName传递将返回AAPL,因为Apple是Apple,Inc的子字符串。同样,对于Microsoft或Micros返回MSFT,因为Microsoft或Micros是Microsoft Corporation的子字符串。你知道吗

这是我的现有代码,如果我放入子字符串,它将返回错误:

def getStockTicker(stockName):
    return companyTickers[companyNames.index(stockName)]

有人有什么想法吗?你知道吗

编辑:我已经处理了这个错误,如果在companyNames中找不到任何东西,它就会返回ValueError


Tags: 项目字符串apple错误microsoftinc股票股票代码
3条回答

stockName in someFullString将告诉您stockName是否是someFullString的子串。你知道吗

因此,您可以创建一个只包含stockName是其子字符串的字符串的生成器,并检索第一个字符串的索引(如果有的话):

def getStockTicker(stockName):
    for fullString in (s for s in companyNames if stockName in s):
        return companyTickers[companyNames.index(fullString)]
    # at this point, stockName is not a substring of anything in compagnyNames
    return None # or raise an exception, or whatever

除了迭代companyNames并检查它是否包含stockName之外,可能没有别的方法了。你知道吗

def getStockTicker(stockName):
    for index, companyName in enumerate(companyNames):
        if stockName in companyName: 
            return companyTickers[index]

我认为两个单独的列表,一个是公司名称,一个是公司股票代码,不是正确的数据结构。你知道吗

你熟悉Python dict吗?它将键映射到值。如果您使用公司名称作为键,使用股票代码符号作为值,那么声明dict将如下所示:

companies = {
    'Apple, Inc.': 'AAPL',
    'Microsoft Corporation': 'MSFT'
}

使用全名检索给定的股票代码如下所示:

companies['Apple, Inc.']  # returns 'AAPL'

至于基于子字符串检索代码,这是完全可行的。需要注意的一点是:同一子串可能匹配多个键,因此您希望返回可能匹配的列表,而不是第一个可能匹配的。你知道吗

companies = {...}

def get_ticker_symbol(company):
    return [value for key, value in companies.items() if company in key]

相关问题 更多 >

    热门问题