python-3.x - 在具有匹配键的字典集中查找条目
问题描述
所以我有一组听写(这是一个示例),请参阅下面的完整代码
{
"XETHXXBT": {
"altname": "ETHXBT",
"wsname": "ETH/XBT",
"aclass_base": "currency",
"base": "XETH",
"aclass_quote": "currency",
"quote": "XXBT",
"lot": "unit",
"pair_decimals": 5,
"lot_decimals": 8,
"lot_multiplier": 1,
"leverage_buy": [
2,
3,
4,
5
],
"leverage_sell": [
2,
3,
4,
5
],
"fees": [
[],
[],
[],
[],
[],
[],
[],
[],
[]
],
"fees_maker": [
[],
[],
[],
[],
[],
[],
[],
[],
[]
],
"fee_volume_currency": "ZUSD",
"margin_call": 80,
"margin_stop": 40,
"ordermin": "0.005"
},
"XXBTZUSD": {
...
"ordermin": "0.0002" }}
当匹配中的键时,我想返回完整的字典。
我在使用时不断遇到关键错误:
import krakenex
kex = krankenex.API()
assets = kex.query_public('AssetPairs')
a = {x for x in assets if assets[x]['wsname'] == 'XBT/USD'}
我认为这是做这种事情的“pythonic”方式,但也许我错过了一步?
根据@ He3lixxx的评论,这似乎可以解决问题
a = {x for x in assets.keys() if assets[x].get('wsname') == 'XBT/USD'}
是否有一个很好的一般建议标签来回答答案,因为我绝对应该更好地使用 try/except 块?
解决方案
也许只是使用例外:
a = []
for x in assets:
try:
if x['wsname']:
a.append(x)
except KeyError:
pass
提示/提醒:对于调试,您可以使用
except KeyError as error_info:
print(error_info)
它会给你完整的错误信息。
你可能会问
我为什么要使用它,当我删除异常时,它无论如何都会给我错误?!
答案是:这将忽略错误,因此程序不会停止。
希望这可以帮助 ;)
推荐阅读
- delphi - 使用消息通知 TFrames 他们应该刷新底层数据集
- excel - 执行直到循环 - 直到所有行都为空
- javascript - 快速路由 - 直接访问子/嵌套路径时防止 app.use('/') 顶级路径中间件执行
- c++ - 从 cin 获取 c++ 结构中多个枚举的输入
- java - JavaFx 13 - TableView 垂直滚动条处理程序返回 NullPointerException
- java - 在不使用异步代码的情况下修复 NetworkOnMainThreadException
- drupal - 如何强制用户路径始终在 durpal 中包含核心用户个人资料页面的用户 ID?
- r - 如何计算唯一条目,而不是总和(环境数据集)
- spring - 使用 Spring Boot 的资源所有者密码凭证
- javascript - 如何使网页中的文本在特定时间改变颜色?