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

如何遍历嵌套列表补全Python用户产品数据的缺失值?

解决方法

步骤思路

  • 先提取所有存在的产品编号,生成统一排序后的产品序列(比如1、2、3、4)
  • 将每个用户的产品列表转换为以产品编号为键、价格为值的字典,方便快速查找
  • 按照统一的产品序列逐个提取价格,缺失项填充'N/A'
  • 输出最终结果

完整代码

usernames = ['Dave','mary','John']
products = [
    ['pr1', '40.0', 'pr2', '50.0', 'pr4', '70.0'],
    ['pr2', '35.5', 'pr3', '36.0', 'pr4', '65.5'],
    ['pr1', '23.0', 'pr2', '45.4']
]

# 提取所有产品编号并排序,得到统一的产品顺序
all_product_ids = set()
for prod_list in products:
    # 每两个元素一组,取产品名(索引0、2、4...)
    for i in range(0, len(prod_list), 2):
        prod_id = prod_list[i].replace('pr', '')
        all_product_ids.add(prod_id)
sorted_product_ids = sorted(all_product_ids, key=int)

# 处理每个用户的产品数据
user_results = {}
for name, prod_list in zip(usernames, products):
    # 把当前用户的产品转为字典:{产品编号: 价格}
    user_prod_dict = {}
    for i in range(0, len(prod_list), 2):
        prod_id = prod_list[i].replace('pr', '')
        price = prod_list[i+1]
        user_prod_dict[prod_id] = price
    # 按统一顺序生成结果列表,缺失的填N/A
    result_list = [user_prod_dict.get(pid, 'N/A') for pid in sorted_product_ids]
    user_results[name] = result_list

# 输出最终结果
for name, prices in user_results.items():
    print(f"{name} {prices}")

代码说明

  • 提取产品编号:用集合去重避免重复产品,再按数字排序保证顺序统一
  • 转换为字典:把用户的产品和价格配对,提升价格查找效率
  • 生成结果列表:用列表推导式遍历统一产品序列,dict.get()方法在找不到对应键时自动返回'N/A'
  • 输出格式:直接按需求打印用户名和对应的价格列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:05:20