从字典列表中删除字典以避免除以零错误

Removing a dictionary from a list of dictionaries to avoid a divide by zero error

我有一个字典列表,例如:

[{'askPrice': '0.06671700',
  'askQty': '20.50280000',
  'bidPrice': '0.06671600',
  'bidQty': '11.01110000',
  'symbol': 'ETHBTC'},
 {'askPrice': '0.00237300',
  'askQty': '34.35000000',
  'bidPrice': '0.00237200',
  'bidQty': '33.33300000',
  'symbol': 'LTCBTC'},
 {'askPrice': '0.00000000',
  'askQty': '0.00000000',
  'bidPrice': '0.00000000',
  'bidQty': '0.00000000',
  'symbol': 'BCCBTC'}]

列表中 'symbol':'BCCBTC' 的第三个词典有 'askPrice': '0.00000000' 所以当我尝试将 askPrice 除以零时,我得到除以零错误。如何删除整个字典 -

{'askPrice': '0.00000000',
 'askQty': '0.00000000',
 'bidPrice': '0.00000000',
 'bidQty': '0.00000000',
 'symbol': 'BCCBTC'}

来自词典列表?或者更好的方法是如何从词典列表中删除所有具有 askPricebidPrice 的 0 的词典,而不管 symbol 是什么。

您可以使用列表理解来过滤数据,检查 float 转换后的 bidPriceaskPrice 值是否不是 0:

[d for d in data if float(d['askPrice']) != 0 and float(d['bidPrice']) != 0]

输出:

[
 {'symbol': 'ETHBTC', 'bidPrice': '0.06671600', 'bidQty': '11.01110000', 'askPrice': '0.06671700', 'askQty': '20.50280000'},
 {'symbol': 'LTCBTC', 'bidPrice': '0.00237200', 'bidQty': '33.33300000', 'askPrice': '0.00237300', 'askQty': '34.35000000'}
]