Re: wildcard match with list.index()
jeff <[EMAIL PROTECTED]> wrote: list >[['a', [], []], ['b', [1, 2], []], ['c', [3, 4], [5, 6]]] list.index(['b',[],[]]) > >ie, would like to match the second element in the list with something >where i just know 'b' is the first element, but have no idea what the >other elements will be: > >Traceback (most recent call last): > File "", line 1, in >ValueError: list.index(x): x not in list list.index(['b',[1,2],[]]) >1 If you really want to do that: py> lst.index([x for x in lst if x[0] == 'b'][0]) (Oh, yeah, don't shadow the builtin "list".) What I suspect would be far more useful is a better data structure: py> dct = dict((x[0], x[1:]) for x in lst) py> dct['b']>>> dct['b'] [[1, 2], []] Dealing with the case of more than one entry identified by 'b' is left as a problem to someone who knows what the data actually is. -- \S -- [EMAIL PROTECTED] -- http://www.chaos.org.uk/~sion/ "Frankly I have no feelings towards penguins one way or the other" -- Arthur C. Clarke her nu becomeþ se bera eadward ofdun hlæddre heafdes bæce bump bump bump -- http://mail.python.org/mailman/listinfo/python-list
Re: wildcard match with list.index()
On Nov 10, 1:59 pm, Arnaud Delobelle <[EMAIL PROTECTED]> wrote: > Mr.SpOOn <[EMAIL PROTECTED]> writes: > > Hi, > > is there any way to search elements in a list using wildcards? > > > I have a list of various elements and I need to search for elements > > starting with 'no', extract them and put in a new list. > > I was thinking about something like: > > > mylist.index('no*') > > > Of course this doesn't work. > > I have exactly what you need :) > > >>> import fnmatch > >>> fnmatch.filter(['baba', 'nono', 'papa', 'mama', 'nostradamus'], 'no*') > > ['nono', 'nostradamus'] > > > > HTH > > -- > Arnaud related to the attached, what if i want to match the entry 'b' as the first element as the first item in a list of 0 or more additional lists. example is here - i would like to match any item in the outer list that has 'b' as its first element, not caring what the additional elements contain (but knowing those additional elements will be one or more lists): >>> list [['a', [], []], ['b', [1, 2], []], ['c', [3, 4], [5, 6]]] >>> list.index(['b',[],[]]) ie, would like to match the second element in the list with something where i just know 'b' is the first element, but have no idea what the other elements will be: Traceback (most recent call last): File "", line 1, in ValueError: list.index(x): x not in list >>> list.index(['b',[1,2],[]]) 1 -- http://mail.python.org/mailman/listinfo/python-list
Re: wildcard match with list.index()
Thanks, I just have to choose which one to use :) -- http://mail.python.org/mailman/listinfo/python-list
Re: wildcard match with list.index()
Mr.SpOOn <[EMAIL PROTECTED]> writes: > Hi, > is there any way to search elements in a list using wildcards? > > I have a list of various elements and I need to search for elements > starting with 'no', extract them and put in a new list. > I was thinking about something like: > > mylist.index('no*') > > Of course this doesn't work. I have exactly what you need :) >>> import fnmatch >>> fnmatch.filter(['baba', 'nono', 'papa', 'mama', 'nostradamus'], 'no*') ['nono', 'nostradamus'] >>> HTH -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list
Re: wildcard match with list.index()
On 10.11.2008, Mr.SpOOn <[EMAIL PROTECTED]> wroted: > is there any way to search elements in a list using wildcards? > > I have a list of various elements and I need to search for elements > starting with 'no', extract them and put in a new list. > I was thinking about something like: > > mylist.index('no*') > > Of course this doesn't work. I guess there's a way to use the glob module in this situation, but for the specific case I think you can use: start_with_no = (i for i in mylist if i.startswith("no")) GS -- Grzegorz Staniak Nocturnal Infiltration and Accurate Killing -- http://mail.python.org/mailman/listinfo/python-list