python - 如何从元组列表中获取每个元组值的所有关系/邻居?
问题描述
我正在尝试从元组列表中获取每个元组值的所有邻居/对。
输入:
test_list = [(1, 'the'), (1, 'is'), (2, 'best'), (3, 'for'),(1, 'is'), (4, 'CS'), (2,'is'), ('is',3)]
所需的输出:
{1: {'the','is'}, 2: {'best','is'}, 3: {'for','is'}, 4: {'CS'}, the: {1}, is: {1,2,3}, best: {2}, for: {3}, CS: {4}}
解决方案
您可以使用defaultdict
:
from collections import defaultdict
test_list = [(1, 'the'), (1, 'is'), (2, 'best'), (3, 'for'),(1, 'is'), (4, 'CS'), (2,'is'), ('is',3)]
result = defaultdict(set)
for k, v in test_list:
result[k].add(v)
result[v].add(k)
print(dict(result))
输出:
{1: {'is', 'the'}, 'the': {1}, 'is': {1, 2, 3}, 2: {'is', 'best'}, 'best': {2}, 3: {'for', 'is'}, 'for': {3}, 4: {'CS'}, 'CS': {4}}
如果您不能使用defaultdict
,您只需将其替换为具有 normal 的等效dict
项,并添加一个 if 语句:
result = dict()
...
if k not in result:
result[k] = set()
result[k].add(v)
if v not in result:
result[v] = set()
result[v].add(k)
推荐阅读
- c# - 尝试使用 groupby 在 Linq lambda 语句中将值添加为 CSV
- webserver - NAT 后面的 Web 服务器无法通过 reCaptcha 验证
- java - 无法在 android studio 中导入 jsoup
- java - [Java][Android] 隐式intent和createchooser组合
- java - 应用程序卡在:访问隐藏方法 Landroid/view/View;->c
- apache-spark - Spark JDBC partitionColumns 是否应该被识别为 DataFrame 分区?
- php - php 获取 php 数组中的值
- javascript - React + Tailwind CSS:边距过渡
- sql - 我可以在数据库中创建一个与 SQL USER 同名的用户吗?
- arrays - Array based Linked List in C, issues reading in all data