Posted to tcl by mr_calvin at Tue Aug 01 13:17:16 GMT 2017view pretty

proc spunk {l} {
    set flds [dict create]
    foreach {f v} $l {
	if {![string is list $v] || [llength $v]==1} {
	    dict lappend flds $f $v
	} else {
	    dict lappend flds $f {*}$v
	}
    }
    return $flds
}

set x1 "-a {\{}c} -x 1 -z 3"
set x2 "-a {\{}c} -x 1 -z 3 -a {2 3}"

dict get [spunk $x2] -a; # {\{}c} 2 3; ok
dict get [spunk $x1] -a; # {{}c}
dict get $x1 -a; # {}c