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
Release: 2024-12-08 13:38:10
Original
1042 people have browsed it

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']
Copy after login

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]))
Copy after login

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))
Copy after login

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)}
Copy after login

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

i = iter(a)
b = dict(zip(i, i))
Copy after login

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))
Copy after login

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!

source:php.cn
Statement of this Website
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template