将数据附加到二维lis中每个条目的开头

2024-09-23 06:25:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两张单子。一个是普通列表,另一个是二维列表。我需要从列表1中选取4个条目,然后将它们添加到第二个2d列表中每个条目的前面(最好是按一定的顺序,比如按它们)。你知道吗

我需要下面第一张单子的前四部分

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

添加到列表2中的每个“值”条目中。。。你知道吗

(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语句之外,我可以将这些值“推”到列表中。我把你弄得乱七八糟列表.插入以及列表.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'])

Tags: in列表forvaluecheck条目elementout
3条回答

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

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 functions的更多信息,以便更好地理解它。

相关问题 更多 >