Skip to main content
 首页 » 编程设计

Python 列表到字典之没有值覆盖

2025年05月04日15sky-heaven

Keys = [1,2,3] 
Values = [["a",1],["b",2],["c",3],["d",1]] 
 
Dictionary = dict.fromkeys(Keys)   
 
for d in Dictionary: 
    for value in Values: 
        if value[1] == d: 
            # Add to dictionary 
            Dictionary.update({d:value}) 
        # else 
            # Do Nothing 
 
print(Dictionary) 

当我运行这段代码时,它工作正常,直到我仔细观察它的输出。我注意到,因为我想向“键”1 添加两个“值”,它会覆盖添加的第一个并保留最后一个,这是输出:

{1: ['d', 1], 2: ['b', 2], 3: ['c', 3]} 

我希望键 1 的值同时为 ['a',1] 和 ['d',1]。

请您参考如下方法:

使用 defaultdict对象。

# -*- coding: utf-8 -*- 
from collections import defaultdict 
 
values = [["a", 1], ["b", 2], ["c", 3], ["d", 1]] 
d = defaultdict(list) 
for x, y in values: 
    d[y].append([x, y]) 

然后您可以像访问常规字典对象一样访问键和值。

for k, v in d.iteritems(): 
    print "{} {}".format(k,v) 

哪些输出

1 [['a', 1], ['d', 1]] 
2 [['b', 2]] 
3 [['c', 3]]