在 Python 中从容器中删除整数的问题——一些用例给出了正确的响应,而另一些则没有

问题描述 投票:0回答:1

对于下面的代码,我遇到了一些问题,并且不完全确定出了什么问题。这个想法是添加整数,检查它们是否存在,并能够删除它们,同时附加到正确的值。代码很简单,ADD 和 EXIST 似乎工作顺利。当尝试实现 REMOVE 功能时,我得到的结果好坏参半。

def solution(queries):
  container = set()
  results = []
  for query in queries:
      operation, value = query
      if operation == "ADD":
          container.add(int(value))
          results.append("")
      elif operation == "REMOVE":
          removed_value = int(value)
          if removed_value in container:
              container.remove(removed_value)
              results.append("true")
          else:
              results.append("false")
      elif operation == "EXISTS":
          if int(value) in container:
              results.append("true")
          else:
              results.append("false")
  return results

因此,对于我输入的第一个查询列表,结果与预期结果完全匹配:

queries:
[["ADD","2"], 
 ["ADD","3"], 
 ["ADD","9"], 
 ["REMOVE","10"], 
 ["REMOVE","5"], 
 ["REMOVE","5"], 
 ["REMOVE","9"], 
 ["REMOVE","2"], 
 ["REMOVE","2"], 
 ["REMOVE","9"], 
 ["EXISTS","10"], 
 ["EXISTS","2"], 
 ["EXISTS","3"], 
 ["EXISTS","9"], 
 ["ADD","10"], 
 ["EXISTS","10"]]

输出结果:["", "", "", "假", "假", "假", "真", "真", "假", "假", "假", "假", “真”、“假”、“”、“真”]

但是,当我尝试下一组查询时,我收到一些错误:

queries:
 [["ADD","0"], 
 ["ADD","1"], 
 ["ADD","2"], 
 ["REMOVE","1"], 
 ["ADD","0"], 
 ["ADD","1"], 
 ["ADD","2"], 
 ["ADD","1"], 
 ["REMOVE","2"], 
 ["EXISTS","2"], 
 ["REMOVE","2"], 
 ["EXISTS","2"], 
 ["REMOVE","2"], 
 ["REMOVE","1"], 
 ["EXISTS","1"], 
 ["REMOVE","1"], 
 ["EXISTS","1"], 
 ["REMOVE","1"], 
 ["EXISTS","1"], 
 ["REMOVE","1"], 
 ["REMOVE","0"], 
 ["EXISTS","0"], 
 ["REMOVE","0"], 
 ["EXISTS","0"], 
 ["REMOVE","0"], 
 ["ADD","0"], 
 ["EXISTS","0"]]

预期结果:["", "", "", "true", "", "", "", "", "true", "true", "true", "false", "false", “真”、“真”、“真”、“假”、“假”、“假”、“假”、“真”、“真”、“真”、“假”、“假”、“” ,“真实”]

实际结果:[“”,“”,“”,“真”,“”,“”,“”,“”,“真”,“假”,“假”,“假”,“假”, “真”、“假”、“假”、“假”、“假”、“假”、“假”、“真”、“假”、“假”、“假”、“假”、“” ,“真实”]

有人可以帮我找出我做错了什么吗?在我 100% 确定我的问题之前,我不想继续从这里学习。

python-3.x containers
1个回答
0
投票

您的容器是

set()
并且集合不能包含重复项 - 您添加两次
2
,然后删除
2
并期望集合中有
2
(这不是真的)。

将容器更改为

list()

def solution(queries):
    container = list()  # <-- change set() to list()
    results = []
    for query in queries:
        operation, value = query
        if operation == "ADD":
            container.append(int(value))   # <-- .append() here instead of .add()
            results.append("")
        elif operation == "REMOVE":
            removed_value = int(value)
            if removed_value in container:
                container.remove(removed_value)
                results.append("true")
            else:
                results.append("false")
        elif operation == "EXISTS":
            if int(value) in container:
                results.append("true")
            else:
                results.append("false")
    return results
© www.soinside.com 2019 - 2024. All rights reserved.