所以我有这个2列出的清单列表合并:操纵根据指数
list1=[['user1', 186, 'Feb 2017, Mar 2017, Apr 2017', 550, 555], ['user2', 282, 'Mai 2017', 3579, 3579]]
list2=[['user1', 186, 'Feb 2017, Mar 2017, Apr 2017, Mai 2017', 0, 740]]
^^这只是一个例子,我将有更多的名单内,但原则和格式将是相同的。我将解释我希望如何格式化我所需的输出:当list2 [0] [1] == list1 [0] [1](在我的例子中,186 == 186)替换所有的list2 [0] on如果你没有匹配list2 [0] [1] == list1 [0] [1](在我的例子user2中是list1 [0],但只保留list1 [0] [3](在我的例子550中) - 282不匹配)将该列表照原样并仅将索引[4]修改为0(将变成如下形式:['user2',282,'Mai 2017',3579,0])
I会把我想要的输出,所以你会更好地理解它:
desiredlist = [['user2', 282, 'Mai 2017', 3579, 0], ['user1', 186, 'Feb 2017, Mar 2017, Apr 2017, Mai 2017', 550, 740]]
我想有一个功能,可以做到这一点,我开始工作就可以了,我这个结束:
def mergesafirmacheta(safir,macheta):
combined_list = macheta + safir
final_dict = {tuple(i[:2]):tuple(i[2:]) for i in combined_list}
merged_list = [list(k) + list (final_dict[k]) for k in final_dict]
return merged_list
但是,如果我打印desiredlist = mergesafirmacheta(列表2,列表1)我会得到:
[['user2', 282, 'Mai 2017', 3579, 3579], ['user1', 186, 'Feb 2017, Mar 2017, Apr 2017, Mai 2017', 0, 740]]
我怎样才能得到我想要的输出I” m使用python 3!谢谢!
我开始列出一个列表作为数据结构,并且我无法完全回到对象,我测试了你的代码,但是对于user2来说,最后一个元素是3579而不是0像我想要的输出。 –
@TatuBogdan我现在看,编辑。那么,我不会强迫你,但过了一段时间,你不会知道你的代码是干什么的。 – pacholik