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

Python实现好友关系查询功能 如何选择合适的嵌套数据结构

好友关系分析程序适配数据结构解答

使用字典(dictionary)完全可行,是该场景下非常适配的选择。

你的核心需求是「根据人名快速查询对应的所有好友列表」,字典本身是基于哈希表的映射结构,查询时间复杂度为O(1),刚好匹配这种按key查找的场景,搭配嵌套的列表/集合存储对应好友,完全满足嵌套数据结构的要求。


推荐的嵌套结构设计

外层用字典,key为每个人名,value为存储该用户所有好友的集合(set),集合可以自动处理重复好友的问题(比如同一个用户和你在多个群组都出现时不会重复添加),如果需要保留好友的加入顺序也可以换成列表(list)。

对应你给出的示例,最终构建的结构如下:

friend_map = {
    "Erina": {"Mira", "Kyla"},
    "Mira": {"Erina", "Kyla"},
    "Kyla": {"Erina", "Mira"}
}

简单实现参考

以下是读取分号分隔的群组文本、构建好友映射的代码示例:

friend_map = {}

# 读取好友群组文件
with open("friend_groups.txt", "r", encoding="utf-8") as f:
    for line in f:
        # 处理每行文本,去除多余空格、末尾分号后拆分出所有群组成员
        members = [m.strip() for m in line.strip().rstrip(";").split(";")]
        # 遍历每个成员,将同组其他成员加入其好友列表
        for idx, user in enumerate(members):
            if user not in friend_map:
                friend_map[user] = set()
            # 排除用户自身,添加其他成员
            other_members = members[:idx] + members[idx+1:]
            friend_map[user].update(other_members)

# 查询逻辑示例
query_name = input("请输入要查询的人名:")
if query_name in friend_map:
    print(f"{query_name}的好友有:{'、'.join(friend_map[query_name])}")
else:
    print("未查询到该用户")

如果后续需要扩展存储好友的额外属性(比如共同群组数量、认识时长等),也可以把内层换成嵌套字典,结构如下:

friend_map = {
    "Mira": {
        "Erina": {"common_groups": 1, "known_days": 300},
        "Kyla": {"common_groups": 2, "known_days": 500}
    }
}

内容的提问来源于stack exchange,提问作者user16937050

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:15:01