I am very new to Python and parsing data.

我可以将外部JSON提要拉入Python字典并迭代该字典.

for r in results:
     print r['key_name']

当我浏览返回的结果时,当一个键没有值(一个记录的值可能并不总是存在)时,我得到了一个错误.如果我打印结果,它会显示为

'key_name': None, 'next_key':.................

我的代码因错误而中断.如何控制没有值的键?

Any help will be greatly appreciated!

Brock

推荐答案

The preferred way, when applicable:

for r in results:
     print r.get('key_name')

如果key_name不是字典中的一个键,则只需打印None.也可以使用不同的默认值,只需将其作为第二个参数传递:

for r in results:
     print r.get('key_name', 'Missing: key_name')

如果您想做一些与使用默认值不同的事情(例如,当没有键时完全跳过打印),那么您需要更多的 struct ,即:

for r in results:
    if 'key_name' in r:
        print r['key_name']

or

for r in results:
    try: print r['key_name']
    except KeyError: pass

第二种可能更快(如果它比丢失 keys 更罕见),但第一种似乎对许多人来说更自然.

Json相关问答推荐

嵌套自定义解组

如何在VegaLite中应用Times New Roman,CaliBiri字体

使用 jq,如何将两个属性构成键的对象数组转换为对象的索引对象?

Python 将 struct 化文本转换和筛选为对象

德纳比可视化区域图表 Power BI

如何在 terraform 输出中打印一组用户信息

如何在不使用 Newtonsoft.JSON 的情况下序列化/反序列化

用于遮蔽卡的 Jolt 规格

修改 boost::json::object 中的值

如何使用 Google 表格应用程序脚本将 JSON 中的多个字段提取到 Google 表格中

将具有多个级别的 json 读入 DataFrame [python]

从 JSON 响应中获取最新版本发布字段

序列化特定类型时如何使 JSON.Net 序列化程序调用 ToString()?

使用 Javascript 判断 JSON 对象是否包含值

Play Framework:如何序列化/反序列化与 JSON 的枚举

现代浏览器一次可以处理多少个 HTML 元素?

如何在golang中获取 struct 的json字段名称?

如何在 swift 2 中获取 Alamofire.request().responseJSON 的结果值?

将 Objective-C 对象序列化和反序列化为 JSON

JSON - 是否有任何 XML CDATA 类似功能?