【问题标题】:What is the optimal way to parse these strings in Python?在 Python 中解析这些字符串的最佳方法是什么?
【发布时间】:2019-01-23 06:38:06
【问题描述】:

使用 Python 并给出以下 unique 项,找到匹配这两个名称组合的对的最佳方法是什么?例如,如何找到与字符串"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),

【问题讨论】:

  • 为什么不用字典,它的键是组合元组插入字典。
  • 啊,这真是个好主意。我相信我会做到的。
  • 寻找字符串'BNBBTCUS' - 你能把('BNB','BTCUS')('BNBB','TCUS') 作为元组吗?如果是这样,你会使用哪一个?您的字符串是否“完整”意味着 all 字母必须在查找的元组内,或者您是否在部分匹配之后 - f.e. 'BNBBTCUSDUNNO' 和上面的任何一个?

标签: python python-3.x trading algorithmic-trading cryptocurrency


【解决方案1】:
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'))

【讨论】:

    【解决方案2】:
    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'))
    

    【讨论】:

      猜你喜欢
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 2011-09-05
      • 1970-01-01
      • 2011-03-13
      • 2013-12-20
      相关资源
      最近更新 更多