Repository: spyder-ide/spyder

Issue:
Error when trying to delete two or more variables
## Description

### What steps will reproduce the problem?

<!--- You can use Markdown here --->

When try do delete two or more variables, first the spyder remove just one and the other continue there. In the second time that you try remove the other two, show error that the spyder has encountered an internal problem.

### Traceback
```python-traceback
Exception in comms call remove_value:
  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\comms\commbase.py", line 342, in _handle_remote_call
    buffer['call_kwargs'])
  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\comms\commbase.py", line 353, in _remote_callback
    *call_args, **call_kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\console\kernel.py", line 236, in remove_value
    ns.pop(name)
KeyError: 'df_norm_2018'
Exception in comms call remove_value:
  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\comms\commbase.py", line 342, in _handle_remote_call
    buffer['call_kwargs'])
  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\comms\commbase.py", line 353, in _remote_callback
    *call_args, **call_kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder_kernels\console\kernel.py", line 236, in remove_value
    ns.pop(name)
KeyError: 'df_norm_2017'
```

## Versions

* Spyder version: 4.1.1 
* Python version: 3.7.6
* Qt version: 5.9.6
* PyQt5 version: 5.9.2
* Operating System: Windows 10

### Dependencies

```

# Mandatory:
atomicwrites >=1.2.0           :  1.3.0 (OK)
chardet >=2.0.0                :  3.0.4 (OK)
cloudpickle >=0.5.0            :  1.3.0 (OK)
diff_match_patch >=20181111    :  20181111 (OK)
intervaltree                   :  None (OK)
IPython >=4.0                  :  7.13.0 (OK)
jedi =0.15.2                   :  0.15.2 (OK)
nbconvert >=4.0                :  5.6.0 (OK)
numpydoc >=0.6.0               :  0.9.2 (OK)
paramiko >=2.4.0               :  2.7.1 (OK)
parso =0.5.2                   :  0.5.2 (OK)
pexpect >=4.4.0                :  4.8.0 (OK)
pickleshare >=0.4              :  0.7.5 (OK)
psutil >=5.3                   :  5.7.0 (OK)
pygments >=2.0                 :  2.6.1 (OK)
pylint >=0.25                  :  2.4.4 (OK)
pyls >=0.31.9;<0.32.0          :  0.31.9 (OK)
qdarkstyle >=2.8               :  2.8 (OK)
qtawesome >=0.5.7              :  0.7.0 (OK)
qtconsole >=4.6.0              :  4.7.1 (OK)
qtpy >=1.5.0                   :  1.9.0 (OK)
rtree >=0.8.3                  :  0.9.3 (OK)
sphinx >=0.6.6                 :  2.4.4 (OK)
spyder_kernels >=1.9.0;<1.10.0 :  1.9.0 (OK)
watchdog                       :  None (OK)
zmq >=17                       :  18.1.1 (OK)

# Optional:
cython >=0.21                  :  0.29.15 (OK)
matplotlib >=2.0.0             :  3.1.3 (OK)
numpy >=1.7                    :  1.18.1 (OK)
pandas >=0.13.1                :  1.0.2 (OK)
scipy >=0.17.0                 :  1.4.1 (OK)
sympy >=0.7.3                  :  1.5.1 (OK)
```



Discussion:
@dalthviz, it seems this problem was not correctly fixed in Spyder 4.1?

Resolving patch:
diff --git a/spyder/plugins/variableexplorer/widgets/collectionseditor.py b/spyder/plugins/variableexplorer/widgets/collectionseditor.py
--- a/spyder/plugins/variableexplorer/widgets/collectionseditor.py
+++ b/spyder/plugins/variableexplorer/widgets/collectionseditor.py
@@ -1142,7 +1142,7 @@ def remove_values(self, keys):
         data = self.source_model.get_data()
         for key in sorted(keys, reverse=True):
             data.pop(key)
-            self.set_data(data)
+        self.set_data(data)
 
     def copy_value(self, orig_key, new_key):
         """Copy value"""


Test patch: