我有一个列表,它将字典的键和值作为元素。我想把它换成一本字典。任何帮助都会很感激。我是编程新手。
List=[key1,key2,value2,value2,key3,value3,value3,key4,value4]
我想把它改成:
dict={key1:[],key2:[value2,value2],key3:[value3,value3],key4:[value4]}
方法是:
循环遍历列表并识别键并将下一个元素添加到键中,直到我们击中下一个键。
例如,key1是空的,因为在遇到任何值之前,我们按下一个键(key2)。当然,如果您愿意,也可以使用其他方法。
您必须每次从初始列表中取出一个元素。如果元素中包含'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)
I gives as expected:
{'key1': [], 'key2': ['value2', 'value2'], 'key3': ['value3', 'value3'], 'key4': ['value4']}
注意:上面的代码会静默地丢弃第一个键之前的任何值…
奇怪的示例选择,但如果您的目标是这样的
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']}