首页 > 解决方案 > 如何知道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吗?

标签: python

解决方案


它比这更简单:

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是一个令人困惑的字典名称,乍一看,我认为这是一个索引。最好将其重命名为有意义的东西!


推荐阅读