/usr/lib/python2.7/dist-packages/Scientific/NumberDict.py is in python-scientific 2.9.4-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | # Dictionary containing numbers
#
# These objects are meant to be used like arrays with generalized
# indices. Non-existent elements default to zero. Global operations
# are addition, subtraction, and multiplication/division by a scalar.
#
# Written by Konrad Hinsen <hinsen@cnrs-orleans.fr>
# last revision: 2006-10-16
#
"""
Dictionary storing numerical values
"""
class NumberDict(dict):
"""
Dictionary storing numerical values
Constructor: NumberDict()
An instance of this class acts like an array of number with
generalized (non-integer) indices. A value of zero is assumed
for undefined entries. NumberDict instances support addition,
and subtraction with other NumberDict instances, and multiplication
and division by scalars.
"""
def __getitem__(self, item):
try:
return dict.__getitem__(self, item)
except KeyError:
return 0
def __coerce__(self, other):
if type(other) == type({}):
other = NumberDict(other)
return self, other
def __add__(self, other):
sum_dict = NumberDict()
for key in self.keys():
sum_dict[key] = self[key]
for key in other.keys():
sum_dict[key] = sum_dict[key] + other[key]
return sum_dict
def __sub__(self, other):
sum_dict = NumberDict()
for key in self.keys():
sum_dict[key] = self[key]
for key in other.keys():
sum_dict[key] = sum_dict[key] - other[key]
return sum_dict
def __mul__(self, other):
new = NumberDict()
for key in self.keys():
new[key] = other*self[key]
return new
__rmul__ = __mul__
def __div__(self, other):
new = NumberDict()
for key in self.keys():
new[key] = self[key]/other
return new
__truediv__ = __div__
|