python - 如何知道python字典中是否存在某些东西
问题描述
我正在使用一个 API,来自它的信息将是这样的:
"id": "17",
"address": "Av. Nossa Senhora de Copacabana",
"addressComplement": "A",
"number": "945",
"cityId": "2",
"cityName": "Rio de Janeiro",
"state": "Rio de Janeiro",
"uf": "RJ",
"neighborhood": "Copacabana",
"properties": {},
"telephones": [],
"geolocation": {
"lat": -22.97625,
"lng": -43.19002
},
但是,在某些记录中,它不包含该geolocation
字段,所以我必须检查geolocation
我的代码中是否存在。
我试图用来hasattr
做这个把戏,但我认为我做错了什么。
这是我的代码的一部分:
if hasattr(i, 'geolocation'):
address_lat = i['geolocation']['lat']
address_lng = i['geolocation']['lng']
else:
address_lat = 0.0
address_lng = 0.0
我的想法是它会检查 index 的位置是否i
存在里面的东西geolocation
。如果有东西,则返回 true 并进入条件,否则 var 将接收0.0
。
那么,我做错了吗?这是正确的使用方法hasattr
吗?
解决方案
它比这更简单:
address_lat = i['geolocation']['lat'] if 'geolocation' in i else 0.0
address_lng = i['geolocation']['ing'] if 'geolocation' in i else 0.0
hasattr
对于检查对象是否具有属性很有用。这是一个更具体的情况,您只需要检查一个键是否是in
一个字典。
一个小抱怨:i
是一个令人困惑的字典名称,乍一看,我认为这是一个索引。最好将其重命名为有意义的东西!
推荐阅读
- ios - 如何仅在集合视图中使单元格出列
- django - 通过从模板传递 slug 进行 Django 动态过滤
- sql - Spark - 基于来自另一个数据帧中的列的值查询数据帧
- regex - 可以使用 NLP 吗?自然语言处理
- sql - 在 Laravel 中同时使用 group by 和 count 以及 where 查询
- reactjs - 在同一存储库中的 github 页面前端和后端部署 React 应用程序
- r - 找出异常值并将它们设置为 NA
- javascript - Bot Framework V4 - TypeError:无法在已撤销的代理上执行“获取”
- c++ - 如何将 C++ 权重向量添加到 C++ 中的 caffe 模型
- python - ModuleNotFoundError:没有名为“tensorflow”的模块,即使安装了 tensorflow