繁体   English   中英

列表理解可遍历2个列表列表并更改数据

[英]List comprehension to loop over 2 lists of lists and change data

我有这个列表理解功能:

def mergesafirmacheta(list1,list2):
    desiredlist = [list2[0][:3] + [n2, list2[0][4]] if n1 == list2[0][1]
                   else [id, n1, dates, n2, 0] for id, n1, dates, n2, n3 in list1]
    return desiredlist

我的list1和list2看起来像这样:

list1=[['user1', 186, 'Feb 2017, Mar 2017, Apr 2017', 550, 555], 
       ['user2', 282, 'Mai 2017', 3579, 3579], 
       ['user3', 281, 'Mai 2017', 10, 10]]

list2=[['user2', 282, 'Feb 2017, Mar 2017, Apr 2017, Mai 2017', 100, 1000],
      ['user1', 186, 'Feb 2017, Mar 2017, Apr 2017, Mai 2017', 0, 740]]

if n1 == list2[0][1]我想遍历所有列表,而不仅仅是列表2中index [1]位置的第一个列表,因为现在我只能访问: ['user2', 282, 'Feb 2017, Mar 2017, Apr 2017, Mai 2017', 100, 1000]比较我的if中的282,但我永远不会在第二个列表中达到186。 我如何遍历所有这些? (可能是list2中将有更多列表)。

以后编辑:

所需的输出:

[['user1', 186, 'Feb 2017, Mar 2017, Apr 2017', 550, 740], 
['user2', 282, 'Feb 2017, Mar 2017, Apr 2017, Mai 2017', 3579, 1000],
['user3', 281, 'Mai 2017', 10, 0]]

在乞求时再添加一个循环,并像这样更改变量:

def mergesafirmacheta(list1,list2):
    desiredlist = [list_2[:3] + [n2, list_2[4]] if n1 == list_2[1]
               else [id, n1, dates, n2, 0] for list_2 in list2 for id, n1, dates, n2, n3 in list1]
    return desiredlist

我希望这是您想要的。

我想这就是您要寻找的东西:

list1=[['user1', 186, 'Feb 2017, Mar 2017, Apr 2017', 550, 555], ['user2', 282, 'Mai 2017', 3579, 3579], ['user3', 281, 'Mai 2017', 10, 10]]
list2=[['user2', 282, 'Feb 2017, Mar 2017, Apr 2017, Mai 2017', 100, 1000],['user1', 186, 'Feb 2017, Mar 2017, Apr 2017, Mai 2017', 0, 740]]

desiredlist = []
for id, n1, dates, n2, n3 in list1:
    counter = 0
    for list_2 in list2:
        if n1 == list_2[1]:
               desiredlist.append(list_2[:3] + [n2, list_2[4]])
        else:
               counter += 1
               if counter == len(list2):
                   desiredlist.append([id, n1, dates, n2, 0])

print(desiredlist)

仅当对list2的所有元素的list1中的n1未找到匹配时,才想转到else条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM