list of the lists - append after search
Peter Otten
__peter__ at web.de
Thu Mar 2 14:21:48 EST 2017
Andrew Zyman wrote:
> On Thursday, March 2, 2017 at 11:27:34 AM UTC-5, Peter Otten wrote:
>> Andrew Zyman wrote:
>> .....
>> .....
>> > 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")
>
> thank you. this will do.
> Just curious, is the above loop can be done in a one-liner?
Ah, that newbie obsession ;)
>>> outer = [["a", 1], ["b", 2], ["c", 3], ["blah", 1000]]
>>> [inner + ["new value"] if inner[0] == "blah" else inner for inner in
outer]
[['a', 1], ['b', 2], ['c', 3], ['blah', 1000, 'new value']]
Note that there is a technical difference to be aware of -- matching lists
are replaced rather than modified.
>> While this is what you are asking for it will get slower as the list
>> grows. A better solution uses a dictionary:
>
>> >>> lookup = {inner[0]: inner[1:] for inner in outer}
>
> Yes, understood, i don't expect the list to grow above a few thousand
> entries. But i do agree that utilizing the dict is more efficient.
More information about the Python-list
mailing list