diff --git a/src/lib/shell/assignments.rs b/src/lib/shell/assignments.rs
index dd3ed026d5b303e92ca1fba5594f04d0f6acbf25..57cf9ac18dc75898b41f86d7732af25fec67fd15 100644
--- a/src/lib/shell/assignments.rs
+++ b/src/lib/shell/assignments.rs
@@ -4,6 +4,7 @@ use super::{
 use itoa;
 use lexers::assignments::{Operator, Primitive};
 use parser::assignments::*;
+use smallstring::SmallString;
 use smallvec::SmallVec;
 use shell::{
     history::ShellHistory,
@@ -290,9 +291,7 @@ impl VariableStore for Shell {
                                     Ok(VariableType::Str(ref index)) => {
                                         match self.variables.lookup_any_mut(key.name) {
                                             Some(VariableType::HashMap(map)) => {
-                                                if let Some(VariableType::Str(val)) = map.get_mut(&**index) {
-                                                    *val = value;
-                                                }
+                                                map.entry(SmallString::from_str(index)).or_insert(VariableType::Str(value));
                                             }
                                             Some(VariableType::Array(array)) => {
                                                 let index_num = match index.parse::<usize>() {