代码之家  ›  专栏  ›  技术社区  ›  jizhihaoSAMA

python列表删除函数〔duplicate〕的问题

  •  0
  • jizhihaoSAMA  · 技术社区  · 5 年前

    我知道这可能是一个重复的问题。但由于我的英语表达能力差,我不知道如何搜索它。

    最近我在python列表中发现了一个问题。remove,下面是代码:

    data = []
    for i in range(1000):
        Tempdict = {}
        Tempdict["code"] = str(i)
        data.append(Tempdict)
    
    codes_to_keep = ("1","8","80")
    for i in data:
        if not i["code"] in codes_to_keep:
            data.remove(i)
    
    print(data) #{"code":"1","code":"3","code":"5".......},it will keep odd number leave.
    

    或者,如果我用它来删除需要删除的号码:

    data = []
    for i in range(1000):
        Tempdict = {}
        Tempdict["code"] = str(i)
        data.append(Tempdict)
    
    codes_to_delete = ("1","8","80")
    for i in data:
        if i["code"] in codes_to_delete:
            data.remove(i)
    
    print(data) #{"code":"0","code":"2"xxx},This is what I expected 
    

    怎么搞的?

    1 回复  |  直到 5 年前
        1
  •  0
  •   Arun Augustine    5 年前

    对于正确的答案,

    data = []
    for i in range(1000):
        Tempdict = {}
        Tempdict["code"] = str(i)
        data.append(Tempdict)
    
    
    codes_to_keep = ("1","8","80")
    # for i in data:
    #     if not i["code"] in codes_to_keep:
    #         data.remove(i)
    
    data = list(item for item in data if item["code"] in codes_to_keep)
    
    print(data)
    
    [{'code': '1'}, {'code': '8'}, {'code': '80'}]