Python中合并两个物品计数列表并补零的实现需求
合并两个物品计数列表的解决方案
我来帮你搞定这个合并物品计数列表的需求~下面是具体的实现思路和代码:
核心思路
- 先把两个列表转换成字典,这样可以快速通过物品名称查找对应的计数,比每次遍历列表效率高很多;
- 确定所有需要处理的物品:先保留
listA里的物品顺序,再添加listB中独有的物品(这样输出顺序就和你期望的一致); - 遍历每个物品,分别从两个字典中提取计数,若物品不存在于某个字典中,就用
'0'填充; - 把每个物品的名称和两个计数整理成子列表,最终组合成目标输出。
代码实现
listA = [['a','1'],['e','5'],['i','3'],['o','7'],['u','3']] listB = [['a','6'],['b','3'],['c','4'],['d','1'],['e','2']] # 转换为字典,实现快速查找 dictA = {item[0]: item[1] for item in listA} dictB = {item[0]: item[1] for item in listB} # 确定物品顺序:先listA的所有物品,再添加listB中不在A里的物品 all_items = [item[0] for item in listA] + [item[0] for item in listB if item[0] not in dictA] # 生成目标输出列表 output = [] for item in all_items: count_from_A = dictA.get(item, '0') count_from_B = dictB.get(item, '0') output.append([item, count_from_A, count_from_B]) print(output)
运行结果
执行这段代码后,会输出你期望的结果:
[['a', '1', '6'], ['e', '5', '2'], ['i', '3', '0'], ['o', '7', '0'], ['u', '3', '0'], ['b', '0', '3'], ['c', '0', '4'], ['d', '0', '1']]
如果不需要严格遵循示例的顺序,也可以用set来获取所有唯一物品(all_items = set(dictA.keys()).union(dictB.keys())),只是输出顺序会有所不同,但内容是正确的。
内容的提问来源于stack exchange,提问作者Haseeb Hassan Asif
相关产品推荐
相关产品推荐

