首页 > 解决方案 > 如何从元组列表中获取每个元组值的所有关系/邻居?

问题描述

我正在尝试从元组列表中获取每个元组值的所有邻居/对。

输入:

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}}

标签: pythonlistsettuples

解决方案


您可以使用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)

推荐阅读