将数据追加到 2d 列表中每个条目的开头



我有两个列表。 一个是普通列表,另一个是 2D 列表。 我需要从列表 1 中取出 4 个条目,并将它们(最好按照一定的顺序(如推送它们(添加到第二个 2d 列表的每个条目的前面。

我需要下面列表的前四件

['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', '20', '0:00', '', '1', '0', '0', '0', '0', '0', '1']

添加到列表二中的每个"值"条目...

(0, ['Check In', '', '1607-584-4547', 'Avail', '10:48', '3', '1', '1'])
(1, ['Check In', '', '1607-584-4514', 'Avail', '10:49', '2', '1', '12'])
(2, ['Check Out', '', '1607-584-4580', 'Avail', '10:46', '2', '0', '3'])
(3, ['Check Out', '', '1607-115-4068', 'AUX', '10:49', '0', '0', '8'])

我已经在迭代列表 2,以便在"真实数据"结束后删除一些导致 1-4 个元素组的选项卡,如下所示:

    for element, value in enumerate(agentdata1):
        if len(value) != 8:
            agentdata1.pop(element) 

我的想法是,仍然在 for 循环内但在 if 语句之外,我可以将这些值"推送"到列表中。 我已经搞砸了list.insert和list.append,但还没有快乐。 提前谢谢。

所需的输出如下:

(0, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0','Check In', '', '1607-584-4547', 'Avail', '10:48', '3', '1', '1'])
(1, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0','Check In', '', '1607-584-4514', 'Avail', '10:49', '2', '1', '12'])
(2, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0','Check Out', '', '1607-584-4580', 'Avail', '10:46', '2', '0', '3'])
(3, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0','Check Out', '', '1607-115-4068', 'AUX', '10:49', '0', '0', '8'])
如果要

就地修改列表,只需使用列表切片。首先,设置数据:

l2 = [(0, ['Check In', '', '1607-584-4547', 'Avail', '10:48', '3', '1', '1']),
      (1, ['Check In', '', '1607-584-4514', 'Avail', '10:49', '2', '1', '12']),
      (2, ['Check Out', '', '1607-584-4580', 'Avail', '10:46', '2', '0', '3']),
      (3, ['Check Out', '', '1607-115-4068', 'AUX', '10:49', '0', '0', '8'])]
l1 = ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', '20', '0:00', '', '1', '0', '0', '0', '0', '0', '1']

现在,一个简单的 for 循环:


for _, sub in l2:
    sub[:0] = l1[:4]

你可以试试这个:

l1 = ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', '20', '0:00', '', '1', '0', '0', '0', '0', '0', '1']
l2 = [(0, ['Check In', '', '1607-584-4547', 'Avail', '10:48', '3', '1', '1']), (1, ['Check In', '', '1607-584-4514', 'Avail', '10:49', '2', '1', '12']), (2, ['Check Out', '', '1607-584-4580', 'Avail', '10:46', '2', '0', '3']), (3, ['Check Out', '', '1607-115-4068', 'AUX', '10:49', '0', '0', '8'])]
final_list = [(a, l1[:4]+b) for a, b in l2]

输出:

[(0, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', 'Check In', '', '1607-584-4547', 'Avail', '10:48', '3', '1', '1']), 
(1, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', 'Check In', '', '1607-584-4514', 'Avail', '10:49', '2', '1', '12']), 
(2, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', 'Check Out', '', '1607-584-4580', 'Avail', '10:46', '2', '0', '3']), 
(3, ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0', 'Check Out', '', '1607-115-4068', 'AUX', '10:49', '0', '0', '8'])]

假设你的第二个列表是

agentdata1 = [
    (0, ['Check In', '', '1607-584-4547', 'Avail', '10:48', '3', '1', '1']),
    (1, ['Check In', '', '1607-584-4514', 'Avail', '10:49', '2', '1', '12']),
    (2, ['Check Out', '', '1607-584-4580', 'Avail', '10:46', '2', '0', '3']),
    (3, ['Check Out', '', '1607-115-4068', 'AUX', '10:49', '0', '0', '8'])
]

您的第一个列表是

list1 = ['15', '15:09 WED JAN 10 2018', 'Endcrinology', '0',
         '20', '0:00', '', '1', '0', '0', '0', '0', '0', '1']

首先,我们将列表 1 的前四个元素分开:

four_elements_list1 = list1[:4]

现在,有两种可能的方法:

  1. 更直观的是:

    result = []
    for element, value in agentdata1:
        result.append((element, four_elements_list1 + value))
    
  2. 更紧凑的是:

    result = map(lambda (element, value): (element, four_elements_list1 + value), agentdata1)
    

    您可以找到有关 lambda 函数的更多信息以更好地理解它。

最新更新