Re: wildcard match with list.index()

2008-11-19 Thread Sion Arrowsmith
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 stdin, line 1, in module
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()

2008-11-18 Thread jeff
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 stdin, line 1, in module
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()

2008-11-11 Thread Mr . SpOOn
Thanks, I just have to choose which one to use :)
--
http://mail.python.org/mailman/listinfo/python-list


Re: wildcard match with list.index()

2008-11-10 Thread Grzegorz Staniak
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 gstaniak _at_ wp [dot] pl
Nocturnal Infiltration and Accurate Killing
--
http://mail.python.org/mailman/listinfo/python-list


Re: wildcard match with list.index()

2008-11-10 Thread Arnaud Delobelle
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