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

如何基于经理创建包含多站点的Python字典?

问题

我有如下txt文件内容:

Site1 Manager1
Site2 Manager2
Site3 Manager2
Site4 Manager3
Site5 Manager3
Site6 Manager3

可见部分经理对应多个站点,我需要基于经理创建字典,期望输出为:

{
    'Manager1': 'Site1',
    'Manager2': ['Site2', 'Site3'],
    'Manager3': ['Site4', 'Site5', 'Site6']
}

注:原期望输出存在语法错误,此处修正为合法的Python字典格式(单个值用字符串,多个值用列表存储)

当前脚本可运行,但输出是按站点分类的字典,而非按经理分类:

for key, value in allsiteDic.items():
    rev_dict.setdefault(value, set()).add(key)
      
result = [key for key, values in rev_dict.items() if len(values) > 1]
  
print("duplicate values", str(result))
print(allsiteDic)

输出:

{'Site6': 'Manager3', 'Site4': 'Manager3', 'Site5': 'Manager3', 'Site2': 'Manager2', 'Site3': 'Manager2', 'Site1': 'Manager1'}
解决方案

要实现按经理分组站点的需求,可通过读取文件内容并逐行解析构建目标字典:

# 初始化空字典
manager_sites = {}

# 读取目标文本文件(替换为你的实际文件名)
with open('sites.txt', 'r') as file:
    for line in file:
        # 分割每行的站点和经理,去除首尾空白字符
        site, manager = line.strip().split()
        # 为经理添加对应站点:若经理不在字典中,先创建空列表
        if manager not in manager_sites:
            manager_sites[manager] = []
        manager_sites[manager].append(site)

# 可选:将单个站点的条目从列表转为字符串,贴合期望格式
for manager, sites in manager_sites.items():
    if len(sites) == 1:
        manager_sites[manager] = sites[0]

# 打印最终结果
print(manager_sites)

运行输出

{'Manager1': 'Site1', 'Manager2': ['Site2', 'Site3'], 'Manager3': ['Site4', 'Site5', 'Site6']}

关键说明

  1. 使用with open安全读取文件,避免资源泄漏;
  2. 按行分割站点与经理字段,确保数据解析准确;
  3. 通过字典的键值关系实现经理到站点的分组;
  4. 可选步骤适配单个站点的格式需求,若不需要可直接删除该循环;
  5. 若希望多个站点用集合存储(去重),只需将空列表[]替换为空集合set(),追加操作改用add()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:45:35