假设我有两个列表:
lista = ['winter', 'fall', 'spring', 'summer', 'winter', 'spring']
listb = ['cold', 'rainy', 'windy', 'hot', 'chilly', 'wet']
我想创建一个字典,将lista的唯一值作为键(由于字典只能具有唯一键,它将自动执行),而list 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文件,并尝试使“姓氏”列成为键,而每隔一行作为值(例如清单)。到目前为止,我已经为姓氏创建了一个列表,为其他行创建了该列表,但是我需要将重复名称的值连接起来。
答案 0 :(得分:2)
无需使用空列表显式初始化值,请使用defaultdict
:
Settings.Secure.ANDROID_ID
请注意,不必像我一样强制转换为from collections import defaultdict
lista = ['winter', 'fall', 'spring', 'summer', 'winter', 'spring']
listb = ['cold', 'rainy', 'windy', 'hot', 'chilly', 'wet']
d = defaultdict(list)
for x, y in zip(lista, listb):
d[x].append(y)
print(dict(d))
,因为dict
是defaultdict
的子类。我只是这样做了,所以输出将完全符合您的要求。
结果:
dict
答案 1 :(得分:0)
怎么样?
lista = ['winter', 'fall', 'spring', 'summer', 'winter', 'spring']
listb = ['cold', 'rainy', 'windy', 'hot', 'chilly', 'wet']
mydict = {k : [] for k in lista}
for k,v in zip(lista, listb):
mydict[k].append(v)