How you should debug your code
''' @param d: a dictionary @param key_value_pairs: a list of tuples in the form `(key, value)` @return: a list of tuples of key-value-pair updated in the original dictionary ''' def add_to_dict(d, key_value_pairs): newlist = [] for pair in key_value_pairs: # As is mentioned by Mr Patrick # you might not want to unpack the key-value-pair instantly # to avoid possible corrupted data input from # argument `key_value_pairs` # if you can't guarantee its integrity try: x, y = pair except (ValueError): # unable to unpack tuple tuple_length = len(pair) raise RuntimeError('''Invalid argument `key_value_pairs`! Corrupted key-value-pair has ({}) length!'''.format(tuple_length)) # Instead of using nesting loop # using API would be much more preferable v = d.get(x) # Check if the key is already in the dictionary `d` if v: # You probably mean to append a tuple # as `array.append(x)` takes only one argument # @see: https://docs.python.org/3.7/library/array.html#array.array.append # # Besides, hereby I quote # "The function should return a list of all of the key/value pairs which have changed (with their original values)." # Thus instead of using the following line: # # newlist.append((x, y,)) # # You might want a tuple of (key, old_value, new_value) # Hence: newlist.append((x, v, y,)) # I don't know if you want to update the key-value-pair in the dictionary `d` # take out the following line if you don't want it d[x] = y return newlist
Please keep reading the remaining part if you want to know how to traverse a dict
object properly.
Different ways to traverse a dict
object
Python 3.x
The following segments demonstrate how to traverse a dict
in Python 3.x.
Iterate the set of keys
for key in d: value = d[key] print(key, value) the code segment above has the same effect as the following one: for key in d.keys(): value = d[key] print(key, value)
Iterate the set of key-value-pairs
for key, value in d.items(): print(key, value)
Iterate the set of values
for value in d.values(): print(value)
Python 2.x
The following segments demonstrate how to traverse a dict
in Python 2.x.
Iterate the set of keys
for key in d: value = d[key] print(key, value)
keys()
returns a list of the key set of dictionary d
for key in d.keys(): value = d[key] print(key, value)
iterkeys()
returns an iterator of the key set of dictionary d
for key in d.iterkeys(): value = d[key] print(key, value)
Iterate the set of key-value-pairs
values()
returns a list of the key-value-pair set of dictionary d
for key, value in d.items(): print(key, value)
itervalues()
returns an iterator of the key-value-pair set of dictionary d
for key, value in d.iteritems(): print(key, value)
Iterate the set of values
values()
returns a list of the value set of dictionary d
for value in d.values(): print(value)
itervalues()
returns a iterator of the value set of dictionary d
for value in d.itervalues(): print(value)
Reference: