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

如何从含重复用户的字典列表生成合并位置的Excel表格?

解决方法

先修复数据合并逻辑

你的原代码存在几个关键问题:仅靠UserName判断用户、location是字符串无法直接使用append、循环逻辑错误。正确的思路是用**(用户名+邮箱)**作为唯一标识进行分组,收集同一用户的所有location后再合并成字符串。

步骤1:合并重复用户的location

# 你的原始数据(示例)
dict_list = [
    {'UserName': 'name', 'Email': 'email@email.com', 'location': 'x'},
    {'UserName': 'name', 'Email': 'email@email.com', 'location': 'y'},
    {'UserName': 'another', 'Email': 'another@mail.com', 'location': 'c'}
]

# 用字典分组:键是(UserName, Email)元组,值是location列表
user_map = {}
for entry in dict_list:
    # 用用户名+邮箱作为唯一标识键
    user_key = (entry['UserName'], entry['Email'])
    if user_key not in user_map:
        # 首次出现该用户,初始化location列表
        user_map[user_key] = []
    # 添加当前location到对应列表
    user_map[user_key].append(entry['location'])

# 转换成目标格式的列表
target_data = []
for (name, email), locations in user_map.items():
    # 把location列表转成逗号分隔的字符串
    merged_loc = ', '.join(locations)
    target_data.append({
        'name': name,
        'email': email,
        'location': merged_loc
    })

步骤2:导出到Excel

新手推荐用pandas库,代码更简洁:

import pandas as pd

# 把目标数据转成DataFrame格式
df = pd.DataFrame(target_data)
# 导出到Excel,index=False表示不保存行索引
df.to_excel('用户位置表.xlsx', index=False)

如果不想用pandas,也可以用openpyxl实现:

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# 写入表头
ws.append(['name', 'email', 'location'])
# 逐行写入数据
for row in target_data:
    ws.append([row['name'], row['email'], row['location']])

# 保存文件
wb.save('用户位置表.xlsx')

原代码的问题说明

  1. 用户判断逻辑错误:你需要同时匹配UserName和Email才是同一用户,原代码仅判断了UserName
  2. 数据类型错误:原始数据里的location是字符串,直接调用append会抛出AttributeError,必须用列表存储多个location
  3. 循环逻辑错误:内层循环遍历filtered_List时,只要第一个元素不匹配就直接添加新条目,没有检查完所有已存在的用户;而且当filtered_List为空时,内层循环不会执行,第一个用户根本无法被添加

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:25:14