コード例 #1
0
def test_remove():
    uset = USet()
    uset.add(1, 10)
    uset.add(2, 20)
    assert uset.remove(1) == (1,10)
    assert uset.remove(1) == None
    assert uset.remove(2) == (2,20)
コード例 #2
0
class Bag:
    # Constructor.
    def __init__(self):
        self.uset = USet()  # will store (key, [v1, v2, ... , vn]) pairs

    # String representation of an object for printing.
    def __str__(self):
        d = eval('{}'.format(self.uset))
        pairs = []
        for key, val_list in d.items():
            pairs.extend([(key,val) for val in val_list])
        return '{}'.format(pairs)
        
    def add(self, key, val):
        pair = self.uset.remove(key)
        if pair:
            key, val_list = pair
            val_list.append(val)
        else:
            val_list = [val]
        self.uset.add(key, val_list)

    def remove(self, key):
        pair = self.uset.remove(key)
        if not pair:
            return
        key, val_list = pair
        val = val_list.pop()
        if val_list:
            self.uset.add(key, val_list)
        return (key, val)
    
    def find(self, key):
        pair = self.uset.find(key)
        if not pair:
            return
        key, val_list = pair
        return (key, val_list[0])
    
    def find_all(self, key):
        pair = self.uset.find(key)
        if not pair:
            return []
        key, val_list = pair
        return [(key, val) for val in val_list]

    def keys(self):
        return self.uset.keys()
    
    def size(self):
        keys = self.keys()
        size = 0
        for k in keys:
            _, vals = self.uset.find(k)
            size += len(vals)
        return size
コード例 #3
0
def test_keys():
    uset = USet()
    assert uset.keys() == []
    uset.add(1, 10)
    assert uset.keys() == [1]
    uset.add(2, 20)
    assert uset.keys() == [1,2]
    uset.remove(2)
    assert uset.keys() == [1]
    uset.remove(1)
    assert uset.keys() == []
コード例 #4
0
def test_size():
    uset = USet()
    assert uset.size() == 0
    uset.add(1, 10)
    assert uset.size() == 1
    uset.add(2, 20)
    assert uset.size() == 2
    uset.add(2, 20)
    assert uset.size() == 2
    uset.remove(10)
    assert uset.size() == 2
コード例 #5
0
class Bag:
    def __init__(self):
        '''Initializes member variables.
        '''

        self.uset = USet()  # this is the underlying data structure.

    def __str__(self):
        '''Returns a string representation of an object for printing.
        '''

        return str(self.uset)

    def add(self, key, val):
        '''Adds the pair (key, val) to the Bag.
        '''

        if (self.uset.find(key) == None):
            self.uset.add(key, [val])
        else:
            valList = self.uset.find(key)[1]
            valList.append(val)
            self.uset.remove(key)
            self.uset.add(key, valList)

    def remove(self, key):
        '''Removes a pair with key from the Bag and returns it.
        Returns None if no such pair exsits.
        '''

        if (self.uset.find(key) == None):
            return None

        valList = self.uset.find(key)[1]

        if (valList != []):
            returningTuple = (key, valList.pop())
            if (valList == []):
                self.uset.remove(key)
            return returningTuple
        else:
            self.uset.remove(key)

    def find(self, key):
        '''Returns a pair from the Bag that contains key; None if no
        such pair exists.
        '''

        if (self.uset.find(key) == None):
            return None

        valList = self.uset.find(key)[1]
        returningTuple = (key, valList[0])
        self.uset.add(key, valList)
        return returningTuple

    def find_all(self, key):
        '''Returns all pairs from the Bag that contains key; None if no
        such pair exists.
        '''

        if (self.uset.find(key) == None):
            return []

        listOfTuples = list()
        valList = self.uset.find(key)[1]

        for val in valList:
            listOfTuples.append((key, val))
        return listOfTuples

    def size(self):
        '''Returns the number of pairs currently in the Bag.
        '''

        keyList = self.uset.keys()
        usetSize = 0
        for key in keyList:
            usetSize = usetSize + len(self.uset.find(key)[1])

        return usetSize

    def keys(self):
        '''Returns a list of keys in the Bag.
        '''

        return sorted(self.uset.keys())
コード例 #6
0
ファイル: bag.py プロジェクト: hb02228/Test
class Bag:
    def __init__(self):
        '''Initializes member variables.

        >>> bag = Bag()
        '''
        self.uset = USet()  # this is the underlying data structure.

    def __str__(self):
        '''Returns a string representation of an object for printing.

        >>> bag = Bag()
        >>> print(bag)  # prints bag.__str__()
        '''
        return str(self.uset)

    def add(self, key, val):
        '''Adds the pair (key, val) to the Bag.

        >>> bag = Bag()
        >>> bag.add(1, 10)
        >>> bag.size()
        1
        >>> bag.add(1, 10)
        >>> bag.size()
        2
        >>> bag.add(1, 20)
        >>> bag.size()
        3
        >>> bag.add(2, 20)
        >>> bag.size()
        4
        '''
        if self.uset.find(key) == None:
            val_list = [val]
            self.uset.add(key, val_list)
        else:
            val_list = self.uset.remove(key)[1]
            val_list.append(val)
            self.uset.add(key, val_list)

    def remove(self, key):
        '''Removes a pair with key from the Bag and returns it.
        Returns None if no such pair exsits.

        >>> bag = Bag()
        >>> bag.add(1, 10)
        >>> bag.add(1, 10)
        >>> bag.add(1, 20)
        >>> bag.add(2, 20)
        >>> bag.remove(1)
        (1,10)  # could be any of the 3 pairs with key == 1.
        >>> bag.remove(2)
        (2,20)
        >>> bag.remove(20)
        >>>
        '''
        checkItem = self.uset.find(key)
        if (checkItem == None):
            return None
        else:
            val_list = self.uset.remove(key)[1]
            val = val_list.pop(0)
            if (len(val_list) != 0):
                self.uset.add(key, val_list)
            return (key, val)

    def find(self, key):
        '''Returns a pair from the Bag that contains key; None if no
        such pair exists.

        >>> bag = Bag()
        >>> bag.add(1, 10)
        >>> bag.add(1, 10)
        >>> bag.add(1, 20)
        >>> bag.add(2, 20)
        >>> bag.find(1)
        (1,10)  # could be any of the 3 pairs with key == 1.
        >>> bag.find(2)
        (2,20)
        >>> bag.find(20)
        >>>
        '''
        checkItem = self.uset.find(key)
        if (checkItem == None):
            return None
        else:
            return (key, checkItem[1][0])

    def find_all(self, key):
        checkItem = self.uset.find(key)
        if (checkItem == None):
            return []
        else:
            key_val_list = []
            for val in checkItem[1]:
                key_val_list.append((key, val))
            return key_val_list

    def size(self):
        '''Returns the number of pairs currently in the Bag.
        
        >>> bag = Bag()
        >>> bag.size()
        0
        >>> bag.add(1, 10)
        >>> bag.add(2, 20)
        >>> bag.size()
        2
        >>> bag.add(2, 30)
        >>> bag.size()
        3
        '''
        size = 0
        for key in self.keys():
            size += len(self.uset.find(key)[1])
        return size

    def keys(self):
        '''Returns a list of keys in the Bag.

        >>> bag = Bag()
        >>> bag.add(1, 10)
        >>> bag.add(1, 10)
        >>> bag.add(1, 20)
        >>> bag.add(2, 20)
        >>> sorted(bag.keys())
        [1, 2]
        '''
        return self.uset.keys()