【问题标题】:Handle Keyerror and show result anyway in pymongo and html处理 Keyerror 并在 pymongo 和 html 中显示结果
【发布时间】:2021-09-19 05:53:44
【问题描述】:

我正在试图弄清楚如何在没有键的情况下打印结果,数据库将是可变的

我正在使用以下数据集:

 "pet" : dog 
 "d" : {
    "city" : "Highland",
    "region_code" : "CA",
    "area_code" : 909,
    "time_zone" : "America/Los_Angeles",
    "dma_code" : 803,
    "metro_code" : "Los Angeles, CA",
    "country_code3" : "USA",
    "latitude" : 34.1359,
    "postal_code" : "92346",
    "longitude" : -117.1553,
    "country_code" : "US",
    "country_name" : "United States",
    "continent" : "NA"
},

我正在使用以下来打印国家名称值

<td><a class="button6" >{{campo['pet']}}</a></td>
<td><a class="button6" >{{campo['d']['country_name']}}</a></td>

并且工作正常,打印国家和宠物值,但是当数据库中没有“d”值时出现问题,引发 Keyerror。

我需要有关如何在没有“d”键时仅使用宠物值打印页面的帮助

如果你使用以下

<td><a class="button6" >{{campo['d']}}</a></td>

即使“d”为空,结果也可以正常打印,但由于我需要国家/地区名称值,因此无法正常工作。

谢谢

【问题讨论】:

    标签: python pymongo keyerror


    【解决方案1】:

    您可以使用 python 的built-in get() method 来避免KeyError 对字典进行操作。 get() 允许你指定一个默认值,所以你可以这样做:

    campo.get('d', {}).get('country_name')
    

    安全地检索compo['d'] 的子键

    【讨论】:

    • 你好,像魅力一样工作!感谢您的帮助,祝您有美好的一天。
    • 但是我现在有另一个错误,例如当根本没有 d 值时,引发 AttributError 'NoneType' object has no attribute 'get'
    • 如果你使用我建议的语法,你不应该得到那个错误。
    • 您好,我正在使用您提供的语法并且运行良好,直到我在数据库中查询结果为空“d”,“d”存在但为空时为空,我拥有属性正因为如此,我认为有一种方法可以用一些 ==None 或类似的东西来规避这个错误。感谢您的帮助。
    • 如果你使用 get 你永远不会得到 KeyError。从我列出的链接中: get(key[, default]) 如果 key 在字典中,则返回 key 的值,否则返回默认值。如果未给出默认值,则默认为 None,因此此方法永远不会引发 KeyError
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 2022-01-22
    • 1970-01-01
    • 2012-06-26
    • 2021-03-08
    • 1970-01-01
    • 2013-12-22
    相关资源
    最近更新 更多