【发布时间】:2021-09-06 23:18:22
【问题描述】:
以下代码的目的是处理两个字典,如果值包含 cur 中的项目,则将每个字典中匹配的 symbol 值添加到 pairs 列表中,但如果值包含curpair 列表。
我成功匹配cur 的值,但我不知道如何对curpair 中的项目进行反向匹配。此外,第二个问题是它似乎会创建重复项,可能是因为额外的for 循环与curpair 中的项目进行比较。无论哪种方式,我都不确定是否有办法在线删除重复数据,或者是否需要另一种例程。
我确信有办法做到这一切,同时简化代码,使用列表理解,但也许不是。我试图理解列表理解只会让我放心,我的 Python 经验太短暂,无法理解这一点:)
感谢任何见解。
cur='EUR'
curpair=['BUSD', 'USDT']
def get_pairs(tickers):
pairs = []
for entry in tickers:
if cur in entry['symbol']:
for cp in curpair:
if cp not in entry['symbol']:
pairs.append(entry['symbol'])
return pairs
# d1 and d2 @ https://pastebin.com/NfNAeqD4
spot_pairs_list = get_pairs(d1)
margin_pairs_list = get_pairs(d2)
print(f"from d1: {spot_pairs_list}")
print(f"from d2: {margin_pairs_list}")
输出:
from d1: ['BTCEUR', 'BTCEUR', 'ETHEUR', 'ETHEUR', 'BNBEUR', 'BNBEUR', 'XRPEUR', 'XRPEUR', 'EURBUSD', 'EURUSDT', 'SXPEUR', 'SXPEUR', 'LINKEUR', 'LINKEUR', 'DOTEUR', 'DOTEUR', 'LTCEUR', 'LTCEUR', 'ADAEUR', 'ADAEUR', 'BCHEUR', 'BCHEUR', 'YFIEUR', 'YFIEUR', 'XLMEUR', 'XLMEUR', 'GRTEUR', 'GRTEUR', 'EOSEUR', 'EOSEUR', 'DOGEEUR', 'DOGEEUR', 'EGLDEUR', 'EGLDEUR', 'AVAXEUR', 'AVAXEUR', 'UNIEUR', 'UNIEUR', 'CHZEUR', 'CHZEUR', 'ENJEUR', 'ENJEUR', 'MATICEUR', 'MATICEUR', 'LUNAEUR', 'LUNAEUR', 'THETAEUR', 'THETAEUR', 'BTTEUR', 'BTTEUR', 'HOTEUR', 'HOTEUR', 'WINEUR', 'WINEUR', 'VETEUR', 'VETEUR', 'WRXEUR', 'WRXEUR', 'TRXEUR', 'TRXEUR', 'SHIBEUR', 'SHIBEUR', 'ETCEUR', 'ETCEUR', 'SOLEUR', 'SOLEUR', 'ICPEUR', 'ICPEUR']
from d2: ['ADAEUR', 'ADAEUR', 'BCHEUR', 'BCHEUR', 'BNBEUR', 'BNBEUR', 'BTCEUR', 'BTCEUR', 'DOTEUR', 'DOTEUR', 'ETHEUR', 'ETHEUR', 'EURBUSD', 'EURUSDT', 'LINKEUR', 'LINKEUR', 'LTCEUR', 'LTCEUR', 'SXPEUR', 'SXPEUR', 'XLMEUR', 'XLMEUR', 'XRPEUR', 'XRPEUR', 'YFIEUR', 'YFIEUR']
【问题讨论】:
-
您介意提供一个输入示例吗?这真的有助于理解你想要做什么。编辑:好的,我找到了链接哈哈,最好包含一个示例输入以供将来参考,因为将来可能无法使用外部源。
-
毫无疑问,内联更好。我不确定到底有多少输出适合我试图做的事情,并带有适当的输入示例。我决定谨慎行事并将其全部链接起来。不过我很欣赏你的观点。谢谢。
标签: python string-matching python-dedupe