list of the lists - append after search

Peter Otten __peter__ at web.de
Thu Mar 2 11:26:56 EST 2017


Andrew Zyman wrote:

> Hello,
>  please advise.
> 
>  I'd like search and append the internal list in the list-of-the-lists.
> 
> Example:
>  ll =[ [a,1], [b,2], [c,3], [blah, 1000] ]
> 
>  i want to search for the internal [] based on the string field and, if
>  matches, append that list with a value.
> 
>   if internal_list[0] == 'blah':
>       ll[ internal_list].append = [ 'new value']
> 
> End result:
>  ll =[ [a,1], [b,2], [c,3], [blah, 1000, 'new value'] ]

>>> outer = [["a", 1], ["b", 2], ["c", 3], ["blah", 1000]]
>>> for inner in outer:
...     if inner[0] == "blah":
...         inner.append("new value")
... 
>>> outer
[['a', 1], ['b', 2], ['c', 3], ['blah', 1000, 'new value']]


While this is what you are asking for it will get slower as the list grows. 
A better solution uses a dictionary:

>>> outer = [["a", 1], ["b", 2], ["c", 3], ["blah", 1000]]
>>> lookup = {inner[0]: inner[1:] for inner in outer}
>>> lookup
{'a': [1], 'blah': [1000], 'b': [2], 'c': [3]}
>>> lookup["blah"].append("whatever")
>>> lookup
{'a': [1], 'blah': [1000, 'whatever'], 'b': [2], 'c': [3]}




More information about the Python-list mailing list