python - 从列表元素对转换为邻接列表?
问题描述
是否可以从这样的一对元素列表进行转换:
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
到下面这样的邻接列表:
{'yellow':['1', '3'], 'blue':['2','4'], 'red':['1']}
解决方案
使用默认字典:
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))
推荐阅读
- java - Java 外部 JAR 似乎不起作用
- python - 基于通配符或正则表达式替换查询 DynamoDB
- firebase - 在我们使用 ```Firebase.initializeApp();` 在入口点初始化之后,其余模块如何访问“Firebase”类?
- reactjs - Nextjs App如何在使用Firestore查询后处理本地数据存储?
- css - 在保持页面布局的同时将图像从文本的左侧和右侧扩展到屏幕边缘?
- server - 通过订阅通知用户后端更改
- javascript - 如何在给定属性值的情况下找到对象数组的索引?
- reactjs - 在 useEffect 中等待 useState
- python - 删除“?” 来自 tqdm 进度条的字符?
- python - LightGBM 如何将 feature_fraction 转换为整数值?