input_list = [[0], 'h1'] # contain an arbitrary number of 'h1' in arbitrary indices input_keys = {'h1':[[1],[1]]} # all key values are lists # to implement replace(input_list, input_keys) -> [[0], [1],[1] ]
How to replace element 'h1'
from input_list
by multiple elements from input_keys['h1']
?
I have tried:
#[[0], [1, 1]] list(map(lambda x: x if not isinstance(x, str) else list(itertools.chain(*input_keys[x])), input_list)) #[[0], [[1], [1]]] list(map(lambda x: x if not isinstance(x, str) else input_keys[x], input_list))
Advertisement
Answer
A for loop will do the job.
output_list = [] for item in input_list: if str(item) in input_keys: output_list.extend(input_keys[item]) else: output_list.append(item)
Note that I’m converting lists in the input_list
into strings in order to check that they’re in the dictionary of input_keys
.