如何用字典建模社交网络?编写dico_reseau函数实现好友关联
用字典建模社交网络:实现dico_reseau函数
需求说明
我们需要构建一个字典来表示社交网络,其中键是网络成员的姓名,对应的值是该成员的所有好友组成的列表。输入是一份好友关系表(通常是包含好友对的列表),输出是符合要求的社交网络字典。
实现思路
核心是遍历每一对好友关系,为双方互相添加好友:
- 初始化一个空字典用于存储社交网络
- 遍历输入的每一组好友关系
- 对每一组里的两个成员,分别将对方添加到自己的好友列表中
- 如果成员不在字典里,先创建一个空列表作为其初始好友列表
- 确保好友不会重复添加(如果输入的关系表可能有重复项的话)
代码实现
def dico_reseau(friends): network = {} for person1, person2 in friends: # 处理person1的好友列表 if person1 not in network: network[person1] = [] if person2 not in network[person1]: network[person1].append(person2) # 处理person2的好友列表(好友关系默认双向) if person2 not in network: network[person2] = [] if person1 not in network[person2]: network[person2].append(person1) return network
示例测试
假设输入的好友关系表是:
friends_list = [("Joel", "Anna"), ("Joel", "Bob"), ("Joel", "Charlie"), ("Anna", "Bob")]
调用函数后得到的结果:
{ "Joel": ["Anna", "Bob", "Charlie"], "Anna": ["Joel", "Bob"], "Bob": ["Joel", "Anna"], "Charlie": ["Joel"] }
这样就完成了给Joel匹配3位好友作为对应值的需求。
关键细节解释
- 双向添加好友:社交网络里的好友关系默认是相互的,A是B的好友则B也是A的好友
- 检查成员是否存在:避免直接访问不存在的键导致
KeyError - 检查好友是否已存在:防止重复添加同一好友(适配输入关系表有重复项的场景)
内容的提问来源于stack exchange,提问作者Rayan Rayshe
相关产品推荐
相关产品推荐

