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
相关产品推荐
相关产品推荐

