首页 > 解决方案 > 从列表中的字符串对中收集关系

问题描述

考虑下面的一组列表,每个列表都包含两个字符串。

给定列表中两个字符串的配对意味着它们代表的值相等。所以 A 项与 B 项和 C 项相同,以此类推。

l1 = [ 'A' , 'B' ] 
l2 = [ 'A' , 'C' ]
l3 = [ 'B' , 'C' ] 

将这些关系收集到 dict 中的最有效/pythonic 方法是什么,如下所示:

{ "A" : [ "B" , "C" ] } 

ps 抱歉标题不好,我不知道如何描述问题!

编辑:

为了使问题更清楚,我试图从数千条记录中过滤掉重复的样本。

我对数据集中的每个样本进行了成对比较,表明它们是否相互重复。

有时,一个样本可能会以不同的标识符以一式三份/四份出现在数据集中。

只保留一份重复的样本很重要。

因此,需要一个 dict 或类似结构,其中包含选定的样本作为键,并将其在数据集中的重复项列表作为值。

标签: pythonlogic

解决方案


我会使用集合中的 defaultdict,这样字典就会扩展,并且只接受你放入其中的任何内容。如果这是单向通信,我将使用此代码(假设您列出了列表)

dd = collections.defaultdict(list)

for line in lists:
    dd[line[0]].append(line[1])

对于给定的集合,这将制作字典

{"A" : ["B", "C"] }
{"B" : ["C"] }
'''
this should be a good starting point

推荐阅读