这里有两个列表,我试图做的是找到第一个列表元素的出现,并将保存第二个列表中的值,用于第一个列表中的键,最后,它将成为字典,保存列表1中的特定键和列表2中的值
输入:
list1 = ['A', 'A', 'B', 'B', 'C', 'D']
list2 = [1, 2, 3, 4, 5, 6]
预期输出:
{'A': [1, 2], 'B': [3, 4], 'C': [5], 'D':[6]}
电流输出:
{'A': [1, 2], 'B': [4], 'C': []}
我目前所做的,
values = [list2[0]]
key = list1[0]
dic = {}
for i in range(1, len(list1)):
if list1[i] == list1[i - 1]:
values.append(list2[i])
elif list1[i] != list1[i - 1]:
dic.update({key: values})
values = []
key = list1[i]
print(dic)
列表1和列表2的长度总是相等的,并且是经过排序的
3条答案
按热度按时间0pizxfdo1#
您可以使用
dict.setdefault
来初始化每个不同的键,并将值附加到一个新的列表中:output
将变为:演示:https://replit.com/@blhsing/InstructiveNoxiousCollaborativesoftware
biswetbf2#
您的代码存在多个小问题:
1.您缺少dict中的最后一个条目,因为dict仅在值更改时更新。但是,对于最后一个值(在您的示例中为“D”),情况并非如此。
1.通过使用空列表初始化
values
,将丢失第一个值可以通过以下方式解决这些问题:
1.在循环下面添加
dic.update({key: values})
1.将
values = []
更改为values = [list2[i]]
332nm8kg3#
您还可以使用
collections
中的defaultdict