You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python条件语句与列表匹配问题:双条件匹配失效排查

双条件匹配加密货币交易对的Python实现问题

已知数据

两个交易对列表:

mexc_names = ['ogn_usdt','qnt_usdt','btc_tryb','sbr_usdt','kton_eth','kton_eth','kton_eth']
kraken_names = ['ognusd','qnteur','aaveeth','sbrusd','aaveeth','adaeth','algoeth']

已实现的单条件匹配

此前实现了单前缀匹配:遍历kraken_names,若mexc_names中元素下划线前的前缀存在于kraken元素中,则输出配对:

for x in mexc_names:
    for y in kraken_names:
        if x.partition("_")[0] in y:
            print(x,y)

输出结果:

ogn_usdt ognusd
qnt_usdt qnteur
sbr_usdt sbrusd

需求与错误尝试

需要实现双条件匹配:仅当mexc元素下划线前的前缀和下划线后的后缀同时存在于同一个kraken元素中时,才输出配对。

错误尝试的代码:

for x in mexc_names:
    for y in kraken_names:
        if (x.partition("_")[0] and x.partition("_")[2]) in y:
            print(x,y)

错误原因:(a and b) in y是逻辑写法错误,Python中a and b会返回b(当a为非空字符串时),实际仅判断了后缀是否在y中,因此得到错误结果:

kton_eth adaeth
kton_eth algoeth
...

正确实现方案

核心是分别判断前缀和后缀是否同时存在于目标字符串中,同时提前拆分前缀和后缀避免重复计算:

for x in mexc_names:
    # 拆分前缀、分隔符、后缀,仅取前缀和后缀
    prefix, _, suffix = x.partition("_")
    # 处理后缀缩写(比如usdt对应usd),可根据实际需求调整
    trimmed_suffix = suffix[:3].lower()
    for y in kraken_names:
        y_lower = y.lower()
        # 同时满足前缀和处理后的后缀都在kraken元素中
        if prefix.lower() in y_lower and trimmed_suffix in y_lower:
            print(x, y)

输出结果

ogn_usdt ognusd
sbr_usdt sbrusd

补充说明

  • 若不需要处理后缀缩写(比如严格匹配完整后缀),直接用if prefix in y and suffix in y即可
  • 加入大小写转换是为了避免大小写差异导致的匹配失败,可根据交易对命名规则决定是否保留

内容的提问来源于stack exchange,提问作者Caleb Lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 07:01:18