list - python - 在字典形式中,如何转换单元素的列表

我想要以下列表作为字典


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



预期字典如下所示


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



时间:

你可以使用:


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



zip创建键的位置,用于新字典的值对。


it = iter(sample_list)


dct = dict(zip(it, it))



在python


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



此示例可以处理不均匀的列表(通常会让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'}



如果列表中包含偶数个元素,请尝试这样做:


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



解决方案具有在python 3.x下不创建中间列表的优点,在python 2.x中只使用xrange替换range

你可以使用以下字典理解:


{x:y for x,y in zip(sample_list[::2], sample_list[1::2])}


# {'A': 'B', 'C': 'D'}



你可以对迭代器使用字典理解:


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



it = iter(lst)


{k: next(it) for k in it}


# {'A': 'B', 'C': 'D'}




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


n = { lst[n]:lst[n+1] for n in range(0, len(lst), 2)}


n



...