Steven W. Orr <[EMAIL PROTECTED]> wrote: ... > I need to unpack this into three seperate arrays called name, fields, > valid. The old code looked like this:
You're using lists, not arrays. If you DID want arrays, you'd have to import standard library module array, and you'd be limited to a few elementary types as items; it's pretty obvious that this is not what you want -- nevertheless, why use the wrong name? > names = []; fields = []; valid = [] > for ii in mdict: > names.append(mdict[ii]['name']) > fields.append(mdict[ii]['fields']) > valid.append(mdict[ii]['valid']) The order of keys in dictionary mdict is totally arbitrary, therefore the order of items in those lists is going to be equally arbitrary; you sure you _want_ that? Normally order IS significant in lists. > I was very pleased with myself, except that the real world example of > 'fields' and 'valid' is that they can be (but not always) a sequence. Why would that make any difference at all? > e.g., > > mdefs = {0:{'name': 'Hello0', > 'fields':(('Address', 8), > ('Control', 8)), > 'valid': {'Address': (1,255), > 'Control': (33,44)}}, > 1:{'name': 'Hello1', > 'fields':'fields1', > 'valid': 'valid1'}, > 2:{'name': 'Hello2', > 'fields':'fields2', > 'valid': 'valid2'}} > > Is there a way to do this with possibly a more concise technique than the > first for loop above? not by much: names = [v['name'] for v in mdict.itervalues()] fields = [v['fields'] for v in mdict.itervalues()] valid = [v['valid'] for v in mdict.itervalues()] but this just saves a few characters, if that. Alex -- http://mail.python.org/mailman/listinfo/python-list