A basic dictionary question

David Aldrich David.Aldrich at EMEA.NEC.COM
Thu Jun 11 06:10:23 EDT 2015


Hi

I am fairly new to Python.  I am writing some code that uses a dictionary to store definitions of hardware registers.  Here is a small part of it:

import sys

register = {
    'address'  : 0x3001c,
    'fields' : {
        'FieldA' : {
            'range' : (31,20),
        },
        'FieldB' : {
            'range' : (19,16),
        },
    },
    'width' : 32
};

def main():
    fields = register['fields']
    for field, range_dir in fields:         <== This line fails
        range_dir = field['range']
        x,y = range_dir['range']
        print(x, y)

if __name__ == '__main__':
    main()

I want the code to print the range of bits of each field defined in the dictionary.

The output is:

Traceback (most recent call last):
  File "testdir.py", line 32, in <module>
    main()
  File "testdir.py", line 26, in main
    for field, range_dir in fields:
ValueError: too many values to unpack (expected 2)

Please will someone explain what I am doing wrong?

Also I would like to ask how I could print the ranges in the order they are defined.  Should I use a different dictionary class or could I add a field to the dictionary/list to achieve this?

Best regards

David

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20150611/1724352d/attachment.html>


More information about the Python-list mailing list