使用推导式创建字典列表时条目合并为单个字典如何解决
问题解决方法
错误原因
原有代码的推导式逻辑为:在单个字典内部遍历所有步长为2的索引,生成所有键值对后,再将这单个字典放入列表中,因此最终列表仅包含1个合并了所有键值对的字典,若存在重复键还会出现值覆盖的问题。
修复代码
固定双键值对场景
如果每个独立字典固定包含2个键值对(对应原始列表每4个元素为一个分组),可直接使用如下推导式:
clothes_dict = [ {clothes_list[i]: clothes_list[i+1], clothes_list[i+2]: clothes_list[i+3]} for i in range(0, len(clothes_list), 4) ]
通用场景
如果需要支持每个字典包含任意数量的键值对,可先拆分原始列表为键值对元组,再按需求分组生成字典:
# 拆分原始列表为(键, 值)元组列表 pairs = list(zip(clothes_list[::2], clothes_list[1::2])) # 按每个字典2个键值对的规则分组生成结果列表,可按需调整步长 clothes_dict = [dict(pairs[i:i+2]) for i in range(0, len(pairs), 2)]
运行上述代码后即可得到目标格式的输出,列表中每个元素为独立的双键值对字典。
内容的提问来源于stack exchange,提问作者M5RKED
相关产品推荐
相关产品推荐

