使用一对键创建值的联合

我正在研究社交媒体共同朋友问题,我选择使用字典来代表他们。我被困在你让一对用户说 a 和 b 并创建一个具有他们朋友列表联合的集合的部分,比如 ab -> [{b,c,d,e},{c,d,a }]


注意:下面的代码表示有一个用户,他有一些存储在字典中的朋友。


现在我想将每个用户与他们朋友列表中的每个其他用户配对,并创建一个集合列表,其中包含两个用户的朋友列表。


users = {

    'a': ['b', 'c', 'd', 'e'],

    'b': ['c', 'd', 'a'],

    'c': ['a', 'b'],

    'd': ['a','b','e'],

    'e': ['a','d']

}


开心每一天1111
浏览 138回答 1
1回答

www说

您可以将列表的字典转换为集合的字典,以便您可以对返回的两个用户的每个组合使用集合交集itertools.combinations来查找他们的共同朋友,并形成一个由用户对的frozensets索引的集合字典:from itertools import combinationsu = {k: set(l) for k, l in users.items()}{frozenset((a, b)): u[a] & u[b] for a, b in combinations(u, 2)}这将返回:{frozenset({'b', 'a'}): {'c', 'd'}, frozenset({'a', 'c'}): {'b'}, frozenset({'a', 'd'}): {'b', 'e'}, frozenset({'a', 'e'}): {'d'}, frozenset({'b', 'c'}): {'a'}, frozenset({'b', 'd'}): {'a'}, frozenset({'b', 'e'}): {'a', 'd'}, frozenset({'c', 'd'}): {'b', 'a'}, frozenset({'c', 'e'}): {'a'}, frozenset({'e', 'd'}): {'a'}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python