pattern matching with multiple lists
Tim Chase
python.list at tim.thechases.com
Fri Jul 16 17:58:18 EDT 2010
On 07/16/2010 02:20 PM, Chad Kellerman wrote:
> Greetings,
> I have some code that I wrote and know there is a better way to
> write it. I wonder if anyone could point me in the right direction
> on making this 'cleaner'.
>
> I have two lists: liveHostList = [ app11, app12, web11, web12, host11 ]
> stageHostList = [ web21,
> web22, host21, app21, app22 ]
>
> I need to pair the elements in the list such that:
> app11 pairs with app21
> app12 pairs with app22
> web11 pairs with web21
> web12 pairs with web22
> host11pairs with host21
While I like MRAB's solution even better than mine[1], you can
also use:
liveHostList = ["app11", "app12", "web11", "web12", "host11"]
stageHostList = ["web21", "web22", "host21", "app21", "app22"]
def bits(s):
return (s[:-2],s[-1])
for live, stage in zip(
sorted(liveHostList, key=bits),
sorted(stageHostList, key=bits),
):
print "Match: ", live, stage
-tkc
[1] His solution is O(N), making one pass through each list, with
O(1) lookups into the created dict during the 2nd loop, while
mine is likely overwhelmed by the cost of the sorts...usually O(N
log N) for most reasonable sorts. However, this doesn't likely
matter much until your list-sizes are fairly large.
More information about the Python-list
mailing list