首页 > 解决方案 > 从列表元素对转换为邻接列表?

问题描述

是否可以从这样的一对元素列表进行转换:

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] 

到下面这样的邻接列表:

{'yellow':['1', '3'], 'blue':['2','4'], 'red':['1']}

标签: pythonlistdictionary

解决方案


使用默认字典:

from collections import defaultdict

d = defaultdict(list)
for k, v in s:
    d[k].append(v)

这将允许您将项目附加到列表(字典的元素),就好像它们在那里一样,如果它们不存在,它们将为您创建为空列表。

这并没有做任何不能通过以下方式手动完成的事情:

d = {}
for k, v in s:
    if k not in d:
        d[k] = []
    d[k].append(v)

注意:如果您真的希望这些列表的元素是字符串,请执行以下操作:

    d[k].append(str(v))

推荐阅读