如何使用键值将列表转换为python中的字典?

ksh*_*kvn 1 python

我有一个类似以下的列表:

some_list = [   
    'fullname',
    'John Kroes',
    'email',
    'johnkroes1978@example.com',
    'password',
    '3kKb5HYag'
]
Run Code Online (Sandbox Code Playgroud)

如何将其转换为如下所示的词典?

some_dict = {
    'fullname': 'John Kroes',
    'email': 'johnkroes1978@example.com',
    'password': '3kKb5HYag'
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用嵌套循环来完成此操作,但是我不知道如何先记下键,然后记下其值。

我还在循环之前创建了一个临时变量,然后在其中写下了当前循环元素,并尝试在try中将其用作值。

Mad*_*ist 5

有很多方法。一种非常简单的方法是拆分列表:

keys = some_list [::2]
vals = some_list [1::2]
some_dict = dict(zip(keys, vals))
Run Code Online (Sandbox Code Playgroud)

更通用的方法可能是使用迭代器:

it = iter(some_list)
some_dict = dict(zip(it, it))
Run Code Online (Sandbox Code Playgroud)

这种方法更好,原因有二。首先,您不必制作临时列表。其次,它适用于任何可迭代的序列,即使它不是可索引的序列。

要使用的参数zip 必须是相同的迭代器对象才能起作用:每次调用都next将迭代器向前移动,因此获取输出元组的键会使迭代器立即获得值。

这是一线等效:

some_dict = dict(zip(*[iter(some_list)] * 2))
Run Code Online (Sandbox Code Playgroud)