You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用字典建模社交网络?编写dico_reseau函数实现好友关联

用字典建模社交网络:实现dico_reseau函数

需求说明

我们需要构建一个字典来表示社交网络,其中键是网络成员的姓名,对应的值是该成员的所有好友组成的列表。输入是一份好友关系表(通常是包含好友对的列表),输出是符合要求的社交网络字典。

实现思路

核心是遍历每一对好友关系,为双方互相添加好友:

  1. 初始化一个空字典用于存储社交网络
  2. 遍历输入的每一组好友关系
  3. 对每一组里的两个成员,分别将对方添加到自己的好友列表中
    • 如果成员不在字典里,先创建一个空列表作为其初始好友列表
    • 确保好友不会重复添加(如果输入的关系表可能有重复项的话)

代码实现

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:20:34