我有一个列表列表。如果存在具有前三个共同元素的子列表,则将它们合并到一个列表中并添加所有第四个元素。
这个问题最好用代码和所需的输出来解释。
a_list = [['apple', 50, 60, 7],
['orange', 70, 50, 8],
['apple', 50, 60, 12]]
# output:
# [['apple', 50, 60, 19], ['orange', 70, 50, 8]]
我已经有类似问题的代码(前段时间由 Stack Overflow 中的另一个用户给我),但我不完全理解它,所以我无法相应地修改它。这段代码的作用是检查第 0 个和第 2 个元素是否相同,如果相同,则合并子列表,添加第 1 个和第 3 个元素:
import defaultdict
data = [['42x120x1800', 50, '50x90x800', 60],
['42x120x1800', 8, '50x90x800', 10],
['2x10x800', 5, '5x9x80', 6]]
d = defaultdict(lambda :[0, 0])
for sub_list in data:
key = (sub_list[0], sub_list[2])
d[key][0] += sub_list[1]
d[key][1] += sub_list[3]
new_data = [[key[0], val[0], key[1], val[1]] for key, val in d.iteritems()]
# [['2x10x800', 5, '5x9x80', 6], ['42x120x1800', 58, '50x90x800', 70]]
应该如何修改代码以适应我的新问题?如果您也能花时间彻底解释代码,我将不胜感激。