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

如何在Python中将多个键值对列表合并为可转表格的统一结构

实现方案

你之前的代码问题在于字典每个键仅存储单个值,新值会覆盖旧值。修改为每个键对应一个和人员数量等长的列表,按顺序存储对应人员的属性值,无值位置默认填充#N/A即可。

完整实现代码

# 示例输入数据
person1 = [['Name','Alex'], ['Gender','M'], ['Age', 30]]
person2 = [['Name','Anna'], ['Gender','F'], ['Phone','1234567'],['Age', 25]]
person3 = [['Name','Fred'], ['Gender','M'], ['Age', 33], ['Passport', '987654']]

# 统一管理所有人员列表
person_list = [person1, person2, person3]
person_total = len(person_list)

# 收集所有唯一属性:以下两种方式二选一
# 方式1:手动指定属性顺序,和示例输出顺序一致
all_attributes = ['Name', 'Gender', 'Phone', 'Age', 'Passport']
# 方式2:自动去重排序,无需手动维护属性列表
# all_attributes = sorted({attr for p in person_list for attr, _ in p})

# 初始化结果结构,每个属性默认填充#N/A
result = {attr: ['#N/A'] * person_total for attr in all_attributes}

# 遍历填充实际属性值
for person_idx, person_attrs in enumerate(person_list):
    # 把当前人员属性转成字典方便快速查询
    current_person = dict(person_attrs)
    for attr in all_attributes:
        if attr in current_person:
            result[attr][person_idx] = current_person[attr]

# 格式化输出对齐的表格
max_col_width = max(len(str(item)) for attr in result for item in [attr] + result[attr]) + 3
for attr in result:
    output_cols = [attr] + result[attr]
    print('# ' + ''.join(str(col).ljust(max_col_width) for col in output_cols))

运行输出

# Name      Alex     Anna     Fred     
# Gender    M        F        M        
# Phone     #N/A     1234567  #N/A     
# Age       30       25       33       
# Passport  #N/A     #N/A     987654  

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:30:04