Каков оптимальный способ разбора этих строк в Python? - PullRequest
0 голосов
/ 23 января 2019

Используя Python и учитывая следующие уникальные элементы, каков оптимальный способ найти пару, которая соответствует двум объединенным именам? Например, как бы вы нашли кортеж, соответствующий строке "BNBBTC"?

Для фона у правого указателя всегда будет только ~ 5 опций (с длиной строки 3 или 4), в то время как у левого может быть> 100.

(AMB, BNB),
(AMB, BTC),
(AMB, ETH),
(ARK, BTC),
(ARK, ETH),
(ARN, BTC),
(ARN, ETH),
(AST, BTC),
(AST, ETH),
(BAT, BNB),
(BAT, BTC),
(BAT, ETH),
(BCC, BNB),
(BCC, BTC),
(BCC, ETH),
(BCC, USDT),
(BCPT, BNB),
(BCPT, BTC),
(BCPT, ETH),
(BNB, BTC),
(BNB, ETH),
(BNB, USDT),
(BNT, BTC),
(BNT, ETH),
(BQX, BTC),
(BQX, ETH),
(BTC, USDT),
(BTG, BTC),

Ответы [ 2 ]

0 голосов
/ 23 января 2019
l = [('AMB', 'BNB'), ('AMB', 'BTC'),('BNB', 'BTC')]

def find_name(key):
    for Touple in l:
        Flag = 0
        if (''.join(Touple)) == key: 
            Flag = 1
            break

    return Touple if (Flag == 1) else  False

print(find_name('BNBBTC'))
0 голосов
/ 23 января 2019
l = [('AMB', 'BNB'), ('AMB', 'BTC')]

d = dict()

for s in l:
    d[''.join(s)] = s


def find_name(key):
    return d[key] if d.get(key) else None


print(find_name('BNBBTC'))
...