gpt4 book ai didi

python - 循环处理错误/异常

转载 作者:行者123 更新时间:2023-12-03 08:24:11 26 4
gpt4 key购买 nike

我有两个对应的列表:

  • 一个是项目列表
  • 另一个是这些项目的标签列表

  • 我想编写一个检查第一个列表中的每个项目是否为JSON对象的函数。如果是,则应将其保留在列表中,否则应将其及其对应的标签删除。

    我编写了以下脚本来做到这一点:
    import json 
    def check_json (list_of_items, list_of_labels):
    for item in list_of items:
    try:
    json.loads(item)
    break
    except ValueError:
    index_item = list_of_items.index(item)
    list_of_labels.remove(index_item)
    list_of_items.remove(index_item)

    但是,它不会删除不是JSON对象的项目。

    最佳答案

    不要尝试修改您要遍历的列表;它破坏了迭代器。而是,构建并返回新列表。

    import json 
    def check_json (list_of_items, list_of_labels):
    new_items = []
    new_labels = []
    for item, label in zip(list_of items, list_of_labels):
    try:
    json.loads(item)
    except ValueError:
    continue
    new_items.append(item)
    new_labels.append(label)
    return new_items, new_labels

    如果您坚持修改原始参数:
    def check_json (list_of_items, list_of_labels):
    new_items = []
    new_labels = []
    for item, label in zip(list_of items, list_of_labels):
    try:
    json.loads(item)
    except ValueError:
    continue
    new_items.append(item)
    new_labels.append(label)
    list_of_items[:] = new_items
    list_of_labels[:] = new_labels

    但是请注意,这实际上并没有更高的效率。它只是提供了一个不同的界面。

    关于python - 循环处理错误/异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46938802/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com