I've encountered something weird about numpy.void. arr = np.empty ((len(results),), dtype=[('deltaf', float), ('quantize', [('int', int), ('frac', int)])])
for i,r in enumerate (results): arr[i] = (r[0]['deltaf'], tuple(r[0]['quantize_mf'])) from collections import defaultdict, namedtuple experiments = defaultdict(list) testcase = namedtuple ('testcase', ['quantize']) for e in arr: experiments[testcase(e['quantize'])].append (e) Now it seems that when e['quantize'] is used as a dictionary key, equal values are not compared as equal: In [36]: experiments Out[36]: defaultdict(<type 'list'>, {testcase(quantize=(0, 0)): [(1.25, (0, 0))], testcase(quantize=(0, 0)): [(1.25, (0, 0))], testcase(quantize=(0, 0)): [(1.25, (0, 0))]}) See, there are 3 'testcases' inserted, all with keys quantize=(0,0). In [37]: e['quantize'] Out[37]: (0, 0) In [38]: type(e['quantize']) Out[38]: <type 'numpy.void'> There's something weird here. If instead I do: for e in arr: experiments[testcase(tuple(e['quantize']))].append (e) that is, convert e['quantize'] to a tuple before using it as a key, I get the expected behavior: In [40]: experiments Out[40]: defaultdict(<type 'list'>, {testcase(quantize=(0, 0)): [(1.25, (0, 0)), (1.25, (0, 0)), (1.25, (0, 0))]}) _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion