Home >Backend Development >Python Tutorial >How Can I Efficiently Convert a Python List of Alternating Keys and Values into a Dictionary?

How Can I Efficiently Convert a Python List of Alternating Keys and Values into a Dictionary?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-08 13:38:101051browse

How Can I Efficiently Convert a Python List of Alternating Keys and Values into a Dictionary?

Converting [key1,val1,key2,val2] Lists to Dictionaries in Python

In Python, it is common to encounter lists where each pair of elements maps to a key-value pair in a dictionary. To convert such lists to dictionaries, the most syntactically elegant approach is to utilize the built-in zip() function in conjunction with dictionary construction.

For instance, given a list a with alternating keys and values:

a = ['hello','world','1','2']

We can efficiently create a dictionary b where each key from a maps to its corresponding value as follows:

b = dict(zip(a[::2], a[1::2]))

Here, a[::2] extracts the even elements, representing keys, and a[1::2] extracts the odd elements, representing values. The dict() constructor then combines these lists into a dictionary.

For larger lists, a memory-efficient alternative is to leverage the itertools.izip() function, which iteratively consumes the elements from a in pairs:

from itertools import izip
i = iter(a)
b = dict(izip(i, i))

In Python 3, a similar result can be achieved using a dict comprehension along with range():

b = {a[i]: a[i+1] for i in range(0, len(a), 2)}

Alternatively, the zip() function can be used directly, as it has been lazy in Python 3:

i = iter(a)
b = dict(zip(i, i))

For brevity, the "walrus" operator (:=) can be employed in Python 3.8 and later to perform assignment in a single line:

b = dict(zip(i := iter(a), i))

The above is the detailed content of How Can I Efficiently Convert a Python List of Alternating Keys and Values into a Dictionary?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn