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)
任何人都可以帮忙。
使用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)
| 归档时间: |
|
| 查看次数: |
8096 次 |
| 最近记录: |