【问题标题】:Trouble editing a JSON file无法编辑 JSON 文件
【发布时间】:2021-03-23 05:49:56
【问题描述】:

我想要做的是删除“Shoe”变量下包含“Nike”的数组。
这是 Json 文件:

{
    "Shoes/Colorways":
    [
        {
            "Shoe": "Nike",
            "Colorway": "Blue"
        },
        {
            "Shoe": "Jordan",
            "Colorway": "Blue"
        }
    ]
}

我希望 Json 文件的最终结果如下所示:

{
    "Shoes/Colorways":
    [
        {
            "Shoe": "Jordan",
            "Colorway": "Blue"
        }
    ]
}

这是我用来尝试删除带有“Nike”的数组的代码:

import json

path = 'keywords.json'

with open(path, 'r') as f:
    data = json.load(f)

for info in data['Shoes/Colorways']:
    if info['Shoe'] == 'Nike':
        data.remove(info['Shoe'])
        data.remove(info['Colorway'])
    else:
        pass
print(data)

这是错误:

Traceback (most recent call last):
  File "c:\Users\TestUser\Desktop\Projects\Programs\json.py", line 10, in <module>
    data.remove(info['Shoe'])
AttributeError: 'dict' object has no attribute 'remove'

我意识到.remove 仅适用于列表,我似乎无法找到在这种情况下我需要做的事情。

【问题讨论】:

    标签: python arrays json dictionary


    【解决方案1】:

    字典中不存在删除操作。最好跳过一些不必要的值。

     print([info for info in data['Shoes/Colorways'] if info['Shoe'] != 'Nike'])
    

    【讨论】:

      【解决方案2】:

      错误告诉你,.remove 不存在于 dict 对象上。请注意,data 是一个字典。您应该在列表中调用 .remove - data['Shoes/Colorways'] 是您需要从中删除的列表。

      但是,最好使用列表推导来过滤掉元素

      data['Shoes/ColorWays'] = [x for x in data['Shoes/ColorWays'] if x['Shoe'] != 'Nike']
      

      【讨论】:

        【解决方案3】:

        试试这个:

        import json
        
        path = 'keywords.json'
        
        with open(path, 'r') as f:
            data = json.load(f)
        
        data['Shoes/Colorways'] = [info for info in data['Shoes/Colorways'] if info['Shoe'] != 'Nike']
        
        print(data)
        

        【讨论】:

          猜你喜欢
          • 2018-04-19
          • 2023-03-18
          • 1970-01-01
          • 2014-01-21
          • 2017-07-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-15
          相关资源
          最近更新 更多