Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #43830

Working with lists within Dictionaries

Date 2013-04-18 19:28 +0530
Subject Working with lists within Dictionaries
From inshu chauhan <insideshoes@gmail.com>
Newsgroups comp.lang.python
Message-ID <mailman.771.1366293499.3114.python-list@python.org> (permalink)

Show all headers | View raw


[Multipart message — attachments visible in raw view] - view raw

Hello Everyone,

I am trying to work with lists and dictionaries together.
In the following code I have to access pixels in a segmented image through
a dictionary. But the problem is when I am trying to update the list
through dict it is giving me this error of tuple, ofcourse because list
indices should be integer.

THE CODE IS :
import cv
def access_segments(segimage, data):
    print segimage
    segments = {}
    for y in xrange(0, segimage.height):
        for x in xrange(0, segimage.width):
            if segimage[y,x] == (0.0, 0.0, 0.0):
                continue
            else:
                seg_color = segimage[y,x]
                blue = int(seg_color[0])
                green = int(seg_color[1])
                red = int(seg_color[2])
                reg_num = blue + 256 * green + 65536 * red
                point = data[y,x]
                segments.setdefault(reg_num, [])[point] += point

    for p in sorted(segments.iterkeys()):
        points = (segments[p])
        print len(points)
        print points

if __name__== "__main__":
    data = cv.Load(r"C:\Users\inshu\Desktop\Masters
Thesis\data\xyz_00000.yml")
    segimage = cv.LoadImageM(r"C:\Users\inshu\Desktop\Masters
Thesis\Segmentation\segmentation_numbers_00000.tif",
cv.CV_LOAD_IMAGE_UNCHANGED)
    access_segments(segimage, data)


THE ERROR IS:

<cvmat(type=42424010 8UC3 rows=3000 cols=3000 step=9000 )>

Traceback (most recent call last):
  File "C:\Users\inshu\Desktop\test_reading .py", line 27, in <module>
    access_segments(segimage, data)
  File "C:\Users\inshu\Desktop\test_reading .py", line 16, in
access_segments
    segments.setdefault(reg_num, [])[point] += point
TypeError: list indices must be integers, not tuple

How can I access the data without getting this error ? the points have x,
y, z co-ordinates.

Thanks In Advance for your suggestions.

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Working with lists within Dictionaries inshu chauhan <insideshoes@gmail.com> - 2013-04-18 19:28 +0530

csiph-web