Hallo,
Gezien ik begrijp dat map() in Python vele malen sneller is dan een for-lus wil ik de map() functie een beetje begrijpen. Ik heb hiervoor een twee-dimensionaal dictionary gemaakt welke ik uitlees met een dubbele for-lus:
Vervolgens heb ik in de functie het argument "w" toegevoegd, heb ik de derde regel van de print's in de functie weggecomment(#), en heb ik de tweede for-lus voor een map() vervangen:
Dit werkt allemaal prima.
Zoals je misschien wel had verwacht heb ik vervolgens het hekje (#) voor de laatste print in de functie weggehaald. Dit resulteerd echter in de volgende error:
Ik begrijp niet helemaal waarom ik hiervoor een error krijg. Dit omdat het wèl prima werkt wanneer de functie in de for-lus gebruikt wordt.
Heeft iemand enig idee wat ik hier fout doe?
Gezien ik begrijp dat map() in Python vele malen sneller is dan een for-lus wil ik de map() functie een beetje begrijpen. Ik heb hiervoor een twee-dimensionaal dictionary gemaakt welke ik uitlees met een dubbele for-lus:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
| def print_all(): print(date) print(each_time) print(time[each_time]) price_dict = {'1997-05-28': {'09:02:00': 74.54, '09:01:00': 77.22}, '1997-05-29': {'09:02:00': 76.98, '09:01:00': 77.34, '09:03:00':79.23}, '1997-05-30': {'09:03:00': 80.12, '09:01:00': 78.27, '09:02:00': 79.94}} stop_laag = 77 for date, time in sorted(price_dict.iteritems()): for each_time in sorted(time.iterkeys()): print_all() |
Vervolgens heb ik in de functie het argument "w" toegevoegd, heb ik de derde regel van de print's in de functie weggecomment(#), en heb ik de tweede for-lus voor een map() vervangen:
Python:
1
2
3
4
5
6
7
8
9
10
11
| def print_all(w): print(date) print(each_time) #print(time[each_time]) price_dict = {'1997-05-28': {'09:02:00': 74.54, '09:01:00': 77.22}, '1997-05-29': {'09:02:00': 76.98, '09:01:00': 77.34, '09:03:00':79.23}, '1997-05-30': {'09:03:00': 80.12, '09:01:00': 78.27, '09:02:00': 79.94}} stop_laag = 77 for date, time in sorted(price_dict.iteritems()): map(print_all, sorted(time.iterkeys())) |
Dit werkt allemaal prima.
Zoals je misschien wel had verwacht heb ik vervolgens het hekje (#) voor de laatste print in de functie weggehaald. Dit resulteerd echter in de volgende error:
Python:
1
2
3
| map(print_all, sorted(time.iterkeys())) print(time[each_time]) KeyError: '09:03:00' |
Ik begrijp niet helemaal waarom ik hiervoor een error krijg. Dit omdat het wèl prima werkt wanneer de functie in de for-lus gebruikt wordt.
Heeft iemand enig idee wat ik hier fout doe?