我有3个这样的名单:
list1 = [1,2]
list2 = [1,1,1,2,2]
list3 = ["comment1", "comment2", "comment3", "comment4", "commment5"]
list2和list3的长度始终相同。
我想要完成的是通过将list1与list2进行比较来创建新的列表列表,当list2中的项目等于list1中的项目时,附加"注释"在list3中,list2中的索引与新列表中的索引相同。 所以在这种情况下,结果应该是:
new_list' = [["comment1", "comment2", "comment3"],["comment4", "comment5"]]
我希望我说得够清楚......
答案 0 :(得分:1)
grouped = {}
for k, v in zip(list2, list3):
grouped.setdefault(k, []).append(v)
new_list = [grouped[k] for k in list1]
答案 1 :(得分:0)
与Python中的许多问题一样,这应该通过zip
来解决:
# Make result list
new_list = [[] for _ in range(len(list1))]
# Make cheap lookup to find the appropriate list to append to
new_lookup = dict(zip(list1, new_list))
for addkey, comment in zip(list2, list3):
new_lookup[addkey].append(comment)