[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