如何从列表中创建具有多个值的字典?



我目前有两个列表(真正的列表要长得多,但这里有一个例子:)

month = [12,12,12,12,11,11,11,10,...]
wave_height = [3,6,8,2,4,9,7,9,....]

我的目标是有一个字典看起来像:

12: 3, 6, 8, 2
11: 4, 9, 7
10: 9, ...

其中key为月份,values为wave_height的所有实例。我怎么做呢?

您可以使用collections.defaultdict然后zip您的两个列表一起填充键和值。

from collections import defaultdict
month = [12,12,12,12,11,11,11,10]
wave_height = [3,6,8,2,4,9,7,9]
data = defaultdict(list)
for m, w in zip(month, wave_height):
data[m].append(w)

结果

>>> data
defaultdict(<class 'list'>, {12: [3, 6, 8, 2], 11: [4, 9, 7], 10: [9]})
month = [12, 12, 12, 12, 11, 11, 11, 10]
wave_height = [3, 6, 8, 2, 4, 9, 7, 9]
wh = iter(wave_height)
out = {}
for m in month:
out.setdefault(m, []).append(next(wh))
print(out) # {12: [3, 6, 8, 2], 11: [4, 9, 7], 10: [9]}