[Python-ideas] matrix operations on dict :)

Steven D'Aprano steve at pearwood.info
Thu Feb 9 01:51:17 CET 2012


Sturla Molden wrote:
> On 08.02.2012 13:12, julien tayon wrote:

>> It is stupid to code matrix with an hash, I just say as there is a
>> strong analogy between dict and vectors,
> 
> No there is not. A vector is ordered, a hash-table (dict) is unordered.
> 
> - In a vectorlike structure, e.g. a Python list, element i+1 is stored 
> subsequently to element i.

Not necessarily. There is nothing in the API for Python lists that *requires* 
that elements are stored in one continuous array. That's a side-effect of the 
implementation.


> - In a hash-table, e.g. a Python dict, element hash(i+1) is not stored 
> subsequently to element hash(i).

You are focusing too much on accidental implementation details and not enough 
on the fundamental concept of "vector" or "hash table".

Fundamentally, a "dict" is a data structure that associates arbitrary keys to 
values, such that each key is unique but values may not be. Note that the use 
of a hash table for dicts (mappings) is just one possible implementation.

Fundamentally a list is a mapping from sequential (and therefore unique) 
integer keys (the indexes) to values. Note that a linear array with the key 
(index) being implicit rather than explicit is just one possible implementation.

I have no opinion on whether Julien's proposal is useful or not, but vectors 
(lists) can be implemented using mappings (dicts). Lua is proof of this: their 
table type operates as both list and dict.

http://lua-users.org/wiki/TablesTutorial



-- 
Steven




More information about the Python-ideas mailing list