optionLoop
Simple loop structure to iterate over all combinations of an initializing dictionary
No longer will you need a million nested for-loops…
The optionloop works as follows:
First, initialize a dictionary with various keys and values, e.g.:
d = {'doThingX' : [True, False], 'doThingY' : False,
'thingZValue' : ['a', 'b', 1]}
Next create the option loop:
oploop = optionloop(d)
Finally iterate and get your values:
for state in oploop:
doX = state['doThingX']
doY = state['doThingY']
zVal = state['thingZValue']
f(doX, doY, zVal)
This is intended to replace an equivalent looping structure of:
for doX in doThingX:
for doY in doThingY:
for zVal in thingZValue:
f(doX, doY, zVal)
which quickly becomes cumbersome.
Also, option loops can be added to create even more complex looping structures, e.g.:
d1 = {'lang' : ['c'], 'doThingX' : [True, False]}
d2 = {'lang' : ['fortran'], 'doThingX' : [True, False], 'doThingY' : [True, False]}
oploop1 = optionloop(d1)
oploop2 = optionloop(d2)
oploop = oploop1 + oploop2
for state in oploop:
...
is equivalent to:
langs = ['c', 'fortran']
doThingX = [True, False]
doThingY = [True, False]
for lang in langs:
if lang == 'c':
for doX in doThingX:
f(lang, doX)
elif lang == 'fortran':
for doX in doThingX:
for doY in doThingY:
f(lang, doX, doY)
Note, if the order of iteration matters an ordered dict can be used, e.g.:
d = OrderedDict()
d['a'] = [False, True]
d['b'] = [False]
d['c'] = [1, 2, 3]
oploop = optionloop(d)
for state in oploop:
...
is equivalent to:
for a in [False, True]:
for b in [False]:
for c in [1, 2, 3]:
....
Additionally, an option loop (or combination thereof) can be reset using the copy interface:
d1 = {'lang' : ['c'], 'doThingX' : [True, False]}
oploop1 = optionloop(d1)
# iterate through 1
oploop2 = oploop1.copy()
Metadata
Release files for optionloop 1.0.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| optionloop-1.0.7.tar.gz | 17.9 kB | Details |
Release files / optionloop-1.0.7.tar.gz
| Download URL | optionloop-1.0.7.tar.gz |
|---|---|
| Size | 17.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
549803a3b9037b6170f5cc14ff7343395316eebe47c9a3500c436b6d825c9282
|
|
BLAKE2b-256 checksum How to use checksums |
cf9211854118751b4629e47f52464d48d873a923d13849631bd585f569325721
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |