Python: Convert Tuples to Dictionaries
Dictionaries in Python are an implementation of hash tables: a data structure on which data is labeled by a key-value. This data structure is efficient for looking up data by its key, with an expected O(1) lookup time.
It is important to keep in mind that
dict
objects are mutable, and that the key values must be of a hashable (i.e. immutable) type.
Convert List of Tuples to a Dictionary in Python
One of the ways of creating a dictionary in Python is using a list of tuples in the (key,value)
format, simply by calling the dict()
method on your list:
my_data = [('John', 1), ('Joe', 2), ('Alice',3), ('Bob',4)]
my_dict = dict(my_data)
print(my_dict)
{'John': 1, 'Joe': 2, 'Alice': 3, 'Bob': 4}
In effect, this is the reverse of the dict.items()
method. This is a versatile way of creating dicts! For example, you can transform your data with map
before calling the dict()
method:
my_data = [('John', 1), ('Joe', 2), ('Alice',3), ('Bob',4)]
my_dict = dict(map(reversed, my_data))
print(my_dict)
{1: 'John', 2: 'Joe', 3: 'Alice', 4: 'Bob'}
Tuples With Complex Types to Dictionary
Sometimes, depending on your application, you might want to create a dictionary with some complex key - for example, suppose that your key is composed of two values. The list
type is mutable, which means it is not hashable. Therefore, the following code throws an error:
my_data = [([1,2] ,'John'), ([2,3], 'Joe'), ([3,4], 'Alice'), ([4,5],'Bob')]
my_dict = dict(my_data)
print(my_dict)
TypeError: unhashable type: 'list'
In this case, the tuple type can help us again - as tuples are immutable, they are hashable. This means we can use them as keys for our dict, as follows:
my_data = [((1,2) ,'John'), ((2,3), 'Joe'), ((3,4), 'Alice'), ((4,5),'Bob')]
my_dict = dict(my_data)
print(my_dict)
{(1, 2): 'John', (2, 3): 'Joe', (3, 4): 'Alice', (4, 5): 'Bob'}