我正在使用python和binance.client包装器。我正在收集交易所的所有BTC交易对,并希望用交易对创建一个简单的dict:price。 我已经想出了一个办法,但它似乎笨重,需要一分钟左右运行。我目前是一名编程专业的学生,刚刚开始学习python以及其他一些语言。 还有比这更好的方法吗
def BTCPair():
BTCPair = []
BTCPrice = []
BTCPairAndPrice = {}
exchange_info = client.get_exchange_info()
for s in exchange_info['symbols']:
if 'BTC' in (s['symbol'])[-3:]:
BTCPair.append(s['symbol'])
BTCPrice.append(client.get_avg_price(symbol=s['symbol'])['price'])
for i in range(len(BTCPair)):
BTCPairAndPrice[BTCPair[i]] = BTCPrice[i]
return BTCPairAndPrice
首先,
for i in range(len(BTCPair))
是一个antipattern。您可以将这些zipped一起迭代但实际上我们也不需要这样做!您可以使用dictionary comprehension一次性创建所有内容,而不是创建两个列表,然后对它们进行迭代以填充词典。另外,检查字符串结尾的更简洁的方法是^{}
这可能会运行得快一点,但我怀疑字典创建本身是代码中真正的性能瓶颈
我不明白你为什么要用两个循环;一个是将数据放入列表,另一个是将这些列表转换成字典——为什么不直接构建字典呢
您可以直接使用理解来构建词典:
字典的构造方式不太可能对性能有很大影响,但如果有大量数据,则不迭代所有数据两次应该会产生影响
还认为,联系Web服务也可能需要一些时间,所以联系Exchange可能是最慢的部分。p>
相关问题 更多 >
编程相关推荐