我正在研究社交媒体共同朋友问题,我选择使用字典来代表他们。我被困在你让一对用户说 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']}
1 回答
www说
TA贡献1775条经验 获得超8个赞
您可以将列表的字典转换为集合的字典,以便您可以对返回的两个用户的每个组合使用集合交集itertools.combinations来查找他们的共同朋友,并形成一个由用户对的frozensets索引的集合字典:
from itertools import combinations
u = {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'}}
添加回答
举报
0/150
提交
取消