Skip to main content
 首页 » 编程设计

python之将元组列表转换为字典并保留重复项

2025年05月04日8Leo_wl

我正在尝试将我的元组列表转换为一个字典,其中包含该位置的值,并连接到一个列表中。 dict 做我想做的事,只是它删除了重复项,这是我不想要的!

这是发生了什么:

>>> vals 
[(5, u'3'), (5, u'3'), (8, u'1'), (8, u'1')] 
>>> dict(vals) 
{8: u'1', 5: u'3'} 

这是我想要发生的事情

>>> vals 
[(5, u'3'), (5, u'3'), (8, u'1'), (8, u'1')] 
>>> foo(vals) 
{8: [u'1',u'1'], 5: [u'3',u'3']} 

是否有其他一些 python 函数(在上述情况下为 foo)执行此操作?

请您参考如下方法:

这很容易使用 setdefault 完成:

def foo(some_list): 
    result = {} 
    for k, v in some_list: 
        result.setdefault(k, []).append(v) 
 
    return result      

(使用 setdefault 比使用 get(k, []) + [v] 更有效,因为我们就地追加)