【问题标题】:What is the best way to delete nested Python dictionary Keys and it's curely braces?删除嵌套 Python 字典键及其花括号的最佳方法是什么?
【发布时间】:2020-04-08 00:23:53
【问题描述】:

我通过 json.loads 将 JSON 文件加载为字典:

dict = {
 "Area":[
  {
    "id": "aira-01",
    "vis": [
     "menu"
     "hamburger"
     ]
  },
  {
    "id": "aira-02"
  }

目标是删除整个键和值:“id”:“aira-02”。由于是嵌套字典,所以我写了这个sn-p来访问:

    for i in range(len(dict["Area"])):
        if dict["Area"][i]["id"] == "aira-02":
           del dict["Area"][i]["id"]

最终结果是“id”:“aira-02”被删除,但它有一组剩余的花括号 {},我也想删除。以下是删除 "id": "aira-02" 但不删除花括号时的代码样子:

"Area":[
  {
    "id": "aira-01",
    "vis": [
     "menu"
     "hamburger"
     ]
  },
  {}

此外,由于“id”:“aira-02”应该被删除,剩余的“id”:“aira-01”不应以逗号结尾。下面的版本是最终产品的样子:

dict = {
 "Area":[
  {
    "id": "aira-01",
    "vis": [
     "menu"
     "hamburger"
     ]
  }

处理此问题的最佳方法是什么?是否应该将字典转换为字符串并删除大括号和逗号?

谢谢

【问题讨论】:

  • 为什么剩余的id 不应该有一个尾随逗号,如您的最终结果示例中所示?
  • 您需要添加额外的代码才能从 dict['Area'] 中删除空字典。

标签: json python-3.x dictionary nested


【解决方案1】:

要从列表中删除项目,通过过滤掉不需要的项目来创建新列表更有效:

d['Area'] = [i for i in d['Area'] if i['id'] != 'aira-02']

请注意,您应该避免将变量命名为dict,这会影响内置名称。上面的示例使用名称 d 代替。

【讨论】:

  • 感谢您的意见。这种技术叫什么名字?我想了解更多有关它的信息
  • 不客气。这在 Python 中称为list comprehension
猜你喜欢
  • 2023-01-09
  • 2020-03-15
  • 2010-10-12
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 2015-05-26
相关资源
最近更新 更多