如何以字典形式转换单个列表的元素

时间:2019-05-08 10:12:44

标签: python list dictionary

我想将下面的列表作为字典

sample_list=['A', 'B', 'C', 'D']

预期的字典如下所示

out_dict = {'A':'B','C':'D'}

6 个答案:

答案 0 :(得分:5)

您可以使用:

dict(zip(sample_list[::2], sample_list[1::2]))

其中zip为新字典创建键值对。


使用迭代器的变体(因此避免制作您的列表的副本)将在巴黎列表中(如马蒂亚斯(Matthias)指出的ehrm ... pairs 对)在{ }},然后从中创建字典:

zip(it, it)

python> = 3.8 中,您将可以使用assignment expression并使用此精美的单层纸完成您需要的操作

it = iter(sample_list)
dct = dict(zip(it, it))

答案 1 :(得分:3)

您可以使用以下词典理解:

{x:y for x,y in zip(sample_list[::2], sample_list[1::2])}
# {'A': 'B', 'C': 'D'}

答案 2 :(得分:3)

假设列表中的元素数为偶数,请尝试以下操作:

{ sample_list[i] : sample_list[i+1] for i in range(0, len(sample_list) - 1, 2) }

此解决方案的优势在于它不会在Python 3.x下创建中间列表,在Python 2.x中只需将range替换为xrange

答案 3 :(得分:3)

此示例可以处理不均匀的列表(通常会使python崩溃)

sample_list= ['A', 'B', 'C', 'D','E','F','G','H']
output = {}
for i in range(0,len(sample_list),2):
    #print(sample_list[i],sample_list[i+1])
    if (i+1) < len(sample_list): #Dont need this line, just avoids python
    #crashing if the list isn't even.
        temp = {sample_list[i]:sample_list[i+1]}
        output.update(temp)
    else:
        print("ERROR: LIST NOT EVEN, WILL NOT INCL. Last Item.")
print(output)

产生此输出:

{'A': 'B', 'C': 'D', 'E': 'F', 'G': 'H'}

答案 4 :(得分:3)

您可以将字典理解与迭代器一起使用:

lst = ['A', 'B', 'C', 'D']

it = iter(lst)
{k: next(it) for k in it}
# {'A': 'B', 'C': 'D'}

答案 5 :(得分:2)

lst = ['A', 'B', 'C', 'D']
n = { lst[n]:lst[n+1] for n in range(0, len(lst), 2)}
n