@@ -323,29 +323,16 @@ def synchronize_iterables(iterables):
323
323
>>> from nipype.pipeline.utils import synchronize_iterables
324
324
>>> iterables = dict(a=lambda: [1, 2], b=lambda: [3, 4])
325
325
>>> synced = synchronize_iterables(iterables)
326
- >>> [val['a'] for val in synced]
327
- [1, 2]
328
- >>> [val['b'] for val in synced]
329
- [3, 4]
330
-
326
+ >>> synced == [{'a': 1, 'b': 3}, {'a': 2, 'b': 4}]
327
+ True
331
328
>>> iterables = dict(a=lambda: [1, 2], b=lambda: [3], c=lambda: [4, 5, 6])
332
329
>>> synced = synchronize_iterables(iterables)
333
- >>> [len(d) for d in synced]
334
- [3, 2, 1]
335
- >>> [d.get('a', None) for d in synced]
336
- [1, 2, None]
337
- >>> [d.get('b', None) for d in synced]
338
- [3, None, None]
339
- >>> [d.get('c', None) for d in synced]
340
- [4, 5, 6]
330
+ >>> synced == [{'a': 1, 'b': 3, 'c': 4}, {'a': 2, 'c': 5}, {'c': 6}]
331
+ True
341
332
"""
342
- # Convert the (field, function) tuples into (field, value) lists
343
- def nextval (val ):
344
- yield next (iter (val ))
345
-
346
333
out_list = []
347
334
iterable_items = [(field , iter (fvals ()))
348
- for field , fvals in iterables .items ()]
335
+ for field , fvals in sorted ( iterables .items () )]
349
336
while True :
350
337
cur_dict = {}
351
338
for field , iter_values in iterable_items :
0 commit comments