将多个值添加到字典键

Mar*_*vin 0 python dictionary list data-structures

我有两个清单:

list1 = ['670', '619', '524', '670', '693', '693', '693', '632', '671']
list2 = ['JAIPUR', 'MUMBAI', 'DELHI', 'UDAIPUR', 'GOA', 'GOA', 'GOA', 'LUCKNOW', 'JAIPUR']
Run Code Online (Sandbox Code Playgroud)

我想以此为基础制作一本字典。请严格按照应映射到的顺序记下这两个列表。就像键“670”值我们“JAIPUR”等等。

但是当我尝试时,它给出的输出为:

d = dict(zip(list1, list2))

{'670': 'UDAIPUR', '619': 'MUMBAI', '524': 'DELHI', '693': 'GOA', '632': 'LUCKNOW', '671': 'JAIPUR'}
Run Code Online (Sandbox Code Playgroud)

如果为单个键找到多个值,则仅采用最新值。然而我想要的是像 670 这样的单个键应该有多个值:

'670': ['JAIPUR', 'UDAIPUR']
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙。

Kau*_* NP 5

使用defaultdict

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> for i,key in enumerate(list1): 
        if list2[i] not in d[key]:            #to add only unique values (ex: '693':'goa')
            d[key].append(list2[i]) 

>>> d
=> defaultdict(<class 'list'>, {'670': ['JAIPUR', 'UDAIPUR'], '619': ['MUMBAI'], 
               '524': ['DELHI'], '693': ['GOA'], '632': ['LUCKNOW'], '671': ['JAIPUR']})
Run Code Online (Sandbox Code Playgroud)