How to iterate dict
with enumerate
such that I could unpack the index, key and value at the time of iteration?
Something like:
for i, (k, v) in enumerate(mydict): # some stuff
I want to iterate through the keys and values in a dictionary called mydict
and count them, so I know when I'm on the last one.
In order to iterate over the values of the dictionary, you simply need to call values() method that returns a new view containing dictionary's values.
Iterate over all key-value pairs of dictionary by index As we passed the sequence returned by items() to the enumerate() function with start index 0 (default value). Therefore it yielded each item (key-value) of dictionary along with index, starting from 0.
items() , in dictionary iterates over all the keys and helps us to access the key-value pair one after the another in the loop and is also a good method to access dictionary keys with value.
In Python, to iterate the dictionary ( dict ) with a for loop, use keys() , values() , items() methods. You can also get a list of all keys and values in the dictionary with those methods and list() . Use the following dictionary as an example. You can iterate keys by using the dictionary object directly in a for loop.
Instead of using mydict
, you should be using mydict.items()
with enumerate
as:
for i, (k, v) in enumerate(mydict.items()): # your stuff
Sample example:
mydict = {1: 'a', 2: 'b'} for i, (k, v) in enumerate(mydict.items()): print("index: {}, key: {}, value: {}".format(i, k, v)) # which will print: # ----------------- # index: 0, key: 1, value: a # index: 1, key: 2, value: b
Explanation:
enumerate()
returns an iterator object which contains tuples in the format: [(index, list_element), ...]
dict.items()
returns an iterator object (in Python 3.x. It returns list
in Python 2.7) in the format: [(key, value), ...]
enumerate(dict.items())
will return an iterator object containing tuples in the format: [(index, (key, value)), ...]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With