On 13/04/2013 15:34, Saad Bin Javed wrote:
I ran into a bit of problem with my revised code based on Steven's
suggestions.

lst = ['', 'Thu Apr 04           Weigh In', '', 'Sat Apr 06 Collect
NIC', '                     Finish PTI Video', '', 'Wed Apr 10  Serum
uric acid test', '', 'Sat Apr 13   1:00pm  Get flag from dhariwal', '',
'Sun Apr 14      Louis CK Oh My God', '', '']

lst = filter(None, lst)
lst = [item.split('  ') for item in lst]
lst = [item for sublist in lst for item in sublist]
lst = filter(None, lst)

This code would produce:

['Thu Apr 04', ' Weigh In', 'Sat Apr 06', ' Collect NIC', ' Finish PTI
Video', 'Wed Apr 10', ' Serum uric acid test', 'Sat Apr 13', ' 1:00pm',
'Get flag from dhariwal', 'Sun Apr 14', ' Download Louis CK Oh My God']

dict = {}
for item in lst:
     if item.startswith(('Mon','Tue','Wed','Thu','Fri','Sat','Sun')):

         dict.update({lst[lst.index(item)].lstrip():
lst[lst.index(item)+1].lstrip()})
print dict

Such a dictionary would only add the item next to the date as the value.
But from the list you can see 'Sat Apr 06' has two items on the agenda
while 'Sat Apr 13' show item and a time. So you can understand why such
a dict would be useless.

I want all agenda items joined as a comma delimited string and added to
the date key as a value. I've been mulling over how to go about it. One
idea was to get indices of dates in the list and add all items in
between them as values.

index_keys = [] #0, 2, 5, 7, 9
index_values = [] #1, 3, 4, 6, 8, 10
for item in lst:
     if
item.lstrip().startswith(('Mon','Tue','Wed','Thu','Fri','Sat','Sun')):
         index_keys.append(lst.index(item))
     else:
         index_values.append(lst.index(item))

But I can't quite get it to understand that i want all items between
position 0 and 2 in the list to be assigned to item at 0 in the
dictionary and so forth.

Ideas?


Don't fight Python, unlike this chap[1] :) Basically if you're looping around any data structure you rarely need to use indexing, so try this approach.

for item in lst:
    if item.startswith(('Mon','Tue','Wed','Thu','Fri','Sat','Sun')):
        myDict[item] = []
        saveItem = item
    else:
        myDict[saveItem].append(item.strip())


[1]http://www.bbc.co.uk/news/world-us-canada-22118773

--
If you're using GoogleCrap™ please read this http://wiki.python.org/moin/GoogleGroupsPython.

Mark Lawrence

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to