我想将下面的列表作为字典
sample_list=['A', 'B', 'C', 'D']
预期的字典如下所示
out_dict = {'A':'B','C':'D'}
答案 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