Skip to main content
 首页 » 编程设计

python之如何将 [[A, B], [A, C], [A, D]] 列表转换为 Python 中的 {A : [B, C, D]} 字典

2025年05月04日16EasonJim

<分区>

假设我们有一个列表列表,其中嵌套列表包含两个元素 [A, B]。现在,您想将这样的列表转换成一个字典,其中第一个元素应该是键,第二个元素应该是它的值。例如:

[['A', 'B'], ['A', 'C'], ['A', 'D'], ['B', 'B1'], ['B', 'C1'], ['C', 'B2'], ['C', 'C2'], ['C', 'D2']] --> 
 
{'A': ['B', 'C', 'D'], 'B': ['B1', 'C1'], 'C': ['B2', 'C2', 'D2']} 

应保持值的顺序。

我有一个简单的解决方案:

lst = [['A', 'B'], ['A', 'C'], ['A', 'D'], ['B', 'B1'], ['C', 'C1']] 
dic = {} 
for el in lst: 
    if dic.get(el[0]) is None: 
        dic[el[0]] = [el[1]] 
        continue 
    dic[el[0]].append(el[1]) 

还有一个丑陋的列表理解解决方案,它的速度要慢得多,因为它对每个键的完整数据执行循环。

dic = dict([(el[0], [e[1] for r in lst if e[0] == el[0]]) 
            for el in lst]) 

应该有更好更优雅的方式来做到这一点。你能想出点什么吗?