Gegeven is een lijst van tuples l
, en een functie f()
met 2 argumenten. Gevraagd wordt om een woordenboek te construeren, waarbij als sleutels de eerste component van elk tuple gebruikt wordt.
f
op de 2de componenten van deze tuples, en wel in de volgorde waarin deze voorkomen in de lijst l
.
Ter verduidelijking enkele gevallen:
Schrijf de RECURSIEVE functie reduceer()
met als argumenten:
l
: een lijst van tuples, elk bestaande uit 2 componentenf
: de funtie die je gebruikt om de waarden te combineren bij identieke waarden van 1ste tuple-component LET OP: je functie moet recursief geschreven worden, en mag GEEN lusconstructies of comprehensions bevatten.
a = [ ('A', 7),('B', 12), ('A', 29), ('B', -3), ('C',10), ('D',-5), ('C', 9),('A', -1) ] print(reduceer(a, lambda x,y: x+y)) #{'A':35, 'B':9, 'C':19, 'D':-5} a = [ ('A', 7),('B', 12), ('A', 29), ('B', -3), ('C',10), ('D',-5), ('C', 9),('A', -1) ] print(reduceer(a, lambda x,y: x-y)) #{'A': -21, 'B': 15, 'C': 1, 'D': -5} a = [ ('A', 'aaa'),('B', 'bbb'), ('A', 'AAA'), ('B', 'BBB'), ('C','cc'), ('D','d'), ('C', 'CC'),('A', 'X') ] print(reduceer(a, lambda x,y: x+y)) {'A': 'aaaAAAX', 'B': 'bbbBBB', 'C': 'ccCC', 'D': 'd'} a = [ ('A', 'aaa'),('B', 'bbb'), ('A', 'AAA'), ('B', 'BBB'), ('C','cc'), ('D','d'), ('C', 'CC'),('A', 'X') ] print(reduceer(a, lambda x,y: x[0]+y[0])) #{'A': 'aX', 'B': 'bB', 'C': 'cC', 'D': 'd'}