I'm trying to solve this newbie puzzle:

I've created this function:

```
def bucket_loop(htable, key):
    bucket = hashtable_get_bucket(htable, key)
    for entry in bucket:
        if entry[0] == key:          
            return entry[1]                         
    return None

```

And I have to call it in two other functions (bellow) in the following way: to change the value of the element entry[1] or to append to this list (entry) a new element. But I can't do that calling the function bucket\_loop the way I did because **"you can't assign to function call"** (assigning to a function call is illegal in Python). What is the alternative (most similar to the code I wrote) to do this (bucket\_loop(htable, key) = value and hashtable\_get\_bucket(htable, key).append([key, value]))?

```
def hashtable_update(htable, key, value):
    if bucket_loop(htable, key) != None:
        bucket_loop(htable, key) = value
    else:
        hashtable_get_bucket(htable, key).append([key, value])

def hashtable_lookup(htable, key):
    return bucket_loop(htable, key)

```

Thanks, in advance, for any help!

This is the rest of the code to make this script works:

```
def make_hashtable(size):
    table = []
    for unused in range(0, size):
        table.append([])
    return table

def hash_string(s, size):
    h = 0
    for c in s:
         h = h + ord(c)
    return h % size

def hashtable_get_bucket(htable, key):
    return htable[hash_string(key, len(htable))]

```

Similar question (but didn't help me): [SyntaxError: "can't assign to function call"](https://stackoverflow.com/questions/5964927/python-cannot-assign-function-call)