[python-nl] Opschonen programma (was: lambda rewrite question)

A.T.Hofkamp a.t.hofkamp at tue.nl
Wed Jun 29 16:53:48 CEST 2011


On 29/06/11 16:01, Floris van Manen wrote:
> For those of you who know everything about the basic python syntax&  semantics ...
> I get stuck in a simple context issue (i think)
>
>
> this version works, it return the stored float value
>
> def rewrite( d ):
>      for key in d:
>          for k in d[key]['next']:
>              c = float(d[key]['next'][k]['prob'])
>              d[key]['next'][k]['prob'] = c
>      return d

Anderen hebben je vraag al opgelost, ik wil alleen even opmerken dat je programma mooier kan met 
behulp van d.itervalues():

def rewrite( d ):
      for v in d.itervalues():
          for w in v['next'].itervalues():
              c = float(w['prob'])
              w['prob'] = c
      return d


Verder is de 'return' is niet nodig, de aanroeper heeft al een referentie naar d.

In mijn programma's betekent teruggeven van een waarde na een aanroep altijd 'hier heb je een nieuwe 
waarde, de oude is ongewijzigd'. Dat geldt hier niet. Weglaten van de return maakt dat meer expliciet.


Albert


More information about the Python-nl mailing list