Search code examples
pythonpython-3.xdictionaryhashtablecollision

Handle dictionary collision in python3


I currently have the code below working fine:

Can someone help me solve the collision created from having two keys with the same number in the dictionary?

I tried multiple approach (not listed here) to try create an array to handle it but my approaches are still unsuccessful.

I am using #python3.7

def find_key(dic1, n):
    '''
    Return the key '3' from the dict
    below.
    '''
    d = {}
    for x, y in dic1.items():
        # swap keys and values
        # and update the result to 'd'
        d[y] = x
    try:
        if n in d:
            return d[y]
    except Exception as e:
        return (e)

dic1 = {'james':2,'david':3}
# Case to test that return ‘collision’
# comment 'dic1' above and replace it by
# dic1 below to create a 'collision'
# dic1 = {'james':2,'david':3, 'sandra':3}
n = 3
print(find_key(dic1,n))

Any help would be much appreciated.


Solution

  • You know there should be multiple returns, so plan for that in advance.

    def find_keys_for_value(d, value):
        for k, v in d.items():
            if v == value:
                yield k
    
    data = {'james': 2, 'david': 3, 'sandra':3}
    for result in find_keys_for_value(data, 3):
        print (result)