Appending values to all keys of python dictionary -
i have following dictionary:
dic={'a': {'aa': [], 'ab': [], 'ac': []}, 'b': {'ba': [], 'bb': [], 'bc': []}}
i want append 3 values either keys in 'a' or 'b'. following example works:
dic['a']['aa'].append(value_a) dic['a']['ab'].append(value_b) dic['a']['ac'].append(value_c)
any way can in 1 single line. i'm searching following:
dic['a'][*] = [value_a, value_b, value_c]
where * wildcard indexing keys in dic['a'].
as complexity of dictionary in actual program grows current working example becomes unreadable. motivation readability.
to use true one-liner (i.e., not writing for
loop in 1 line) possible use map
, exploit mutability of dicts:
dic={'a': {'aa': [], 'ab': [], 'ac': []}, 'b': {'ba': [], 'bb': [], 'bc': []}} vals = [1,2,3] key = 'a' map(lambda kv: dic[key][kv[0]].append(kv[1]), zip(dic[key], vals))
this return [none, none, none]
dict updated. however, suggest better use explicit for
loop, two-liner:
for k, v in zip(dic[key], vals): dic[key][k].append(v)
note add separate value each of entries in dict, interpret wanted.
Comments
Post a Comment