如何遍历嵌套列表补全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
相关产品推荐
相关产品推荐

