Skip to main content
 首页 » 编程设计

python之1 :n values in dictionary python

2025年05月04日15cmt

我在完成一个简单的任务时遇到了一些麻烦。

我有 2 个列表(长度相同),如下所示:

f1 = ['Shallow', 'Shallow', 'Shallow', 'Shallow', 'Shallow', 'Deep', 'Deep', 'Deep', 'Shallow', 'Shallow', 'Shallow', 'Shallow', 'Shallow', 'Shallow', 'Shallow', 'Deep', 'Deep'] 
f2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] 

我想构建的是一个字典,其中的键取自 f1,值应该是相应的数字列表(f2 包含一些唯一的 id)键。

类似于:

d = {} 
d['Shallow'] = [0, 1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14] 
d['Deep'] = [5, 6, 7, 15, 16] 

我尝试使用 zip 进行循环,但我确实遗漏了一些东西,并且只附加了最后一项:

d = {} 
 
for i, j in zip(f1, f2): 
    d[i] = [] 
    d[i].append(j) 

谢谢你的建议

请您参考如下方法:

问题是 d[i] = [] 总是会覆盖 'Shallow' 或 'Deep' 的条目新的空列表。你想要的是只在它不存在时才这样做:

d = {} 
 
for i, j in zip(f1, f2): 
    if i not in d: 
        d[i] = [] 
    d[i].append(j) 

或者,使用 defaultdict 自动处理:

from collections import defaultdict 
 
d = defaultdict(list) 
 
for i, j in zip(f1, f2): 
    d[i].append(j)