[Tutor] question about a list of lists

Kent Johnson kent37 at tds.net
Mon Jan 29 04:19:38 CET 2007


shawn bright wrote:
> lo there all.
> 
> i have a list of lists that i want to build, only if an item is not in 
> the list already.
> 
> kinda like this
> new_list = []
> for item in lists: # item will look something like [var1, var2, var3]
>     if item[0] in new_list ( only the first element of each list ) like 
> new_list[0][0]
> 
> basicly, i want to know if item[0]   is one of the items[0] in my new_list
> 
> whats a good pythonic way to do this? i mean, i have a couple of way to 
> do this, but they are ugly.

One way to do this is to keep a helper set that contains the first 
elements of each list. Something like
new_list = []
firsts = set()
for item in lists:
   if item[0] not in firsts:
     new_list.append(item)
     firsts.add(item[0]

If you don't care about the order of the result, and if two lists have 
duplicate first items you are happy to use the first, then you could use 
a dict mapping first item to list:

new_list = dict((item[0], item) for item in lists).values()

Kent



More information about the Tutor mailing list