从python字典中删除重复的键,但连接重复键的值

从python字典中删除重复的键,但连接重复键的值,python,list,dictionary,concatenation,Python,List,Dictionary,Concatenation,假设我有两个列表: lista = ['winter', 'fall', 'spring', 'summer', 'winter', 'spring'] listb = ['cold', 'rainy', 'windy', 'hot', 'chilly', 'wet'] 我想创建一个字典,从lista中提取唯一的值作为键(它会自动执行,因为字典只能有唯一的键),从列表b中提取值作为字典值,按顺序对应lista。因此,要创建字典,我将执行以下操作: mydict = {k: v for k, v

假设我有两个列表:

lista = ['winter', 'fall', 'spring', 'summer', 'winter', 'spring']
listb = ['cold', 'rainy', 'windy', 'hot', 'chilly', 'wet']
我想创建一个字典,从lista中提取唯一的值作为键(它会自动执行,因为字典只能有唯一的键),从列表b中提取值作为字典值,按顺序对应lista。因此,要创建字典,我将执行以下操作:

mydict = {k: v for k, v in zip(lista, listb)}
如果我打印这个,我会得到:

{'winter': 'chilly', 'fall': 'rainy', 'spring': 'wet', 'summer': 'hot'}
然而,我想做的是,对于lista中的每一个重复的“键”,我想将listb中的值作为列表连接到字典中的“值”。因此,目标是:

{'winter': ['cold', 'chilly'], 'fall': ['rainy'], 'spring': ['windy', 'wet'], 'summer': ['hot']}
这是我尝试做的一个简化版本,但我认为它适用-我正在读取一个csv文件,并试图使“姓氏”列成为键,每隔一行作为值(作为列表)。到目前为止,我已经为姓氏和其他行创建了一个列表,但我需要将重复名称的值串联起来。

这个怎么样

lista=[“冬季”、“秋季”、“春季”、“夏季”、“冬季”、“春季”]
listb=[“冷”、“雨”、“风”、“热”、“冷”、“湿”]
mydict={k:[]表示列表中的k}
对于zip中的k、v(列表A、列表B):
mydict[k].追加(v)

无需使用空列表显式初始化值,请使用:

注意,没有必要像我那样强制转换到
dict
,因为
defaultdict
dict
的子类。我这样做只是为了让输出完全符合您的要求

结果:

{'winter': ['cold', 'chilly'], 'fall': ['rainy'], 'spring': ['windy', 'wet'], 'summer': ['hot']}

不要使用列表理解来产生副作用。谢谢你,这正是我所需要的
{'winter': ['cold', 'chilly'], 'fall': ['rainy'], 'spring': ['windy', 'wet'], 'summer': ['hot']}