python - if-Else 条件在 Python 中使用 JSON 格式来确定要附加到列表的原始数据
问题描述
我正在从与某个 ID 关联的一系列 JSON 文件(authors_df
包含一堆 id)开始生成一个数据集,我正在使用for
它来执行此操作。我尝试了一部分作者,效果很好。
问题是某些 id 的 Json 文件不完整。因此,我尝试包含一些“其他”条件,以使代码也适用于不完整的数据(长度为 0 的 json 文件)。 问题是我不知道该怎么做。
我试过了if len(json_value['resonanceCategorizations']['1']['fullData']) > 0 else null
但它不起作用(KeyError: '1'
)。我想我必须设置一个包含完整文件的 JSON 结构的不同条件,而不是使用null
这是我的代码,一切正常,但问题在于 else null 行。
json_values_per_author = {}
datalist = []
datadict = {}
for index, row in authors_df.iterrows():
#get the author
author = row['author']
print(author)
#build the url
url = f'http://keystone-db.default.svc.cluster.local:5000/keystonedb/profiles/resonance/categorization?profileId={author}®ionId=1'
#get the json value
json_value = requests.get(url).json()
full_data = json_value['resonanceCategorizations']['1']['fullData'] if len(json_value['resonanceCategorizations']['1']['fullData']) > 0 else null
datalist.append({
"author": author,
"seed1": full_data[0]['seed'],
"seed2": full_data[1]['seed'] if len(full_data) > 2 else 'NA',
"seed3": full_data[2]['seed'] if len(full_data) > 3 else 'NA'
})
我尝试的另一件事是
z = {"000": [{"seed": 0, "globalSegmentId": 0, "globalSegmentName": "Nope", "regionId": 0, "resonance": 0, "isGlobal": true, "globalRegion": 1}]}
full_data = json_value['resonanceCategorizations']['1']['fullData'] if len(json_value['resonanceCategorizations']['1']['fullData']) > 0 else z
如果没有数据,基本上创建一个“空”JSON 值作为默认输入
或者,如果我可以避免在没有数据的情况下附加作者,那会很好。
解决方案
如果您遇到字典中缺少键的问题,请查看从字典中返回默认值
get(key[, default])
Return the value for key if key is in the dictionary, else default. If default is not given, it defaults to None, so that this method never raises a KeyError.
所以在你的情况下它可能看起来像
full_data = json_value.get('resonanceCategorizations', {}).get('1', {}).get('fullData')
推荐阅读
- apache-kafka - 无法在 Kafka 中发布
- sql - 将 nvarchar 值 'value,value' 转换为 int 时转换失败
- django - django 模板标签缺少 1 个必需的位置参数:值
- ruby-on-rails - 如何对 Rails 应用程序进行沙箱化,以便在本地安装依赖项,而无需重新运行 bundle install
- html - 为什么 html 元素在添加溢出时未对齐:隐藏到其中一个兄弟姐妹?
- nginx - NGINX 默认为指向节点服务器的第二个域名上的欢迎页面
- angular - 在另一个类角度4的模型中使用类对象?
- apache-pig - 使用 PIG latin 将数组转置为行
- java - JFrame输入到数组,输出到yml文件
- c++ - 从 const char* 类型的临时变量初始化 cost char*& 类型的非常量引用无效