我有一個串列,其中包含字典的鍵和值作為元素。我想把它改成字典。任何幫助,將不勝感激。我是編程新手。
List=[key1,key2,value2,value2,key3,value3,value3,key4,value4]
我想把它改成:
dict={key1:[],key2:[value2,value2],key3:[value3,value3],key4:[value4]}
方法是:
遍歷串列并識別鍵并將下一個元素添加到鍵,直到我們按下下一個鍵。
例如 key1 是空的,因為在遇到任何值之前我們按下了下一個鍵 (key2)。當然,如果您愿意,也可以使用其他方法。
uj5u.com熱心網友回復:
您必須一次從初始串列中取出一個元素。如果一個元素中有'key'字串,則將一個新專案添加到字典中,并將空串列作為值,并保留當前串列。否則,將該元素添加到當前串列。可能的代碼:
lst = ['key1', 'key2', 'value2', 'value2', 'key3', 'value3', 'value3', 'key4', 'value4']
d = dict()
l = []
for elt in lst:
if 'key' in elt:
l = []
d[elt] = l
else:
l.append(elt)
我按預期給出:
{'key1': [], 'key2': ['value2', 'value2'], 'key3': ['value3', 'value3'], 'key4': ['value4']}
當心:上面的代碼會默默地丟棄第一個鍵之前的任何值......
uj5u.com熱心網友回復:
奇怪的例子選擇,但 IIUC 你的目標是這樣的。
list_in = ["key1","key2","value2","value2","key3","value3","value3","key4","value4"]
dict_out = {}
curr_key = None
for el in list_in:
if "key" in el: # replace with your actual condition
dict_out[el] = []
curr_key = el
else:
dict_out[curr_key].append(el)
print(dict_out)
輸出:
{'key1': [], 'key2': ['value2', 'value2'], 'key3': ['value3', 'value3'], 'key4': ['value4']}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/535842.html
標籤:Python列表字典
