为了账号安全,请及时绑定邮箱和手机立即绑定

使用一对键创建值的联合

使用一对键创建值的联合

开心每一天1111 2021-11-09 16:16:43
我正在研究社交媒体共同朋友问题,我选择使用字典来代表他们。我被困在你让一对用户说 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'}}


查看完整回答
反对 回复 2021-11-09
  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信