gpt4 book ai didi

python - 如果列表 X 元素存在于列表 Y 中,则在其位置之前对列表 X 进行切片

转载 作者:行者123 更新时间:2023-11-28 18:13:59 25 4
gpt4 key购买 nike

TL;DR:需要对列表 A 中的数据进行切片,其中元素也存在于列表 B 中。

您好,我正在尝试比较从 HTTP GET 请求接收到的数据。

第一个列表称为 SUBJECTS,其中包含我的类(class)提供的所有科目的列表。第二个列表 os 称为 DETAILS,其中我有关于每个主题的一些详细信息,包括它们的名称。两个列表的顺序相同。注意:有些科目可以提供不止一门类(class)。文章末尾的输入和输出示例。

我的问题是我需要从每个主题中查明和分离数据以发送到我的数据库。我考虑过比较两个列表并在主题名称出现时保存索引,但我无法做到。

这是我到目前为止尝试过的代码之一:

def format(details, subject):
indexes = []
x = details
indices = [details.index(x) for x in subject]
enum = list(enumerate(indexes))
for i in range(enum[0][1], enum[-1][1]):
if i in enum[:][1]:
print("\n\n")
print(details[enum[i][1]], end=" ")

希望我说得足够清楚。提前致谢!

编辑:

示例输入数据:

SUBJECT = ['EPRI02 - ADMINISTRAÇÃO', 'ECAI06.1 - AUTOMAÇÃO DE SISTEMAS INDUSTRIAIS I', 'ECA022.2 - Automação e Supervisão de Processos II (Prática)']

DETAILS = ['EPRI02 - ADMINISTRAÇÃO', '2018.1', 'IGOR AZEVEDO DOS SANTOS CITTY ROSA (32h)', 'REGULAR', 'Presencial', 'ABERTA', '6T45', 'Anexo 1 - Sala 5', '90/91 alunos',
'ECAI06.1 - AUTOMAÇÃO DE SISTEMAS INDUSTRIAIS I', '2018.1', 'LUIZ FELIPE PUGLIESE (32h)', 'REGULAR', 'Presencial', 'ABERTA', '6M45', 'Anexo 3 - Sala 11', '13/24 alunos',
'ECA022.2 - Automação e Supervisão de Processos II (Prática)', '2018.1', 'LUIZ FELIPE PUGLIESE (32h)', 'REGULAR', 'Presencial', 'ABERTA', '5M23', 'Prédio 2 - Sala 2211', '9/12 alunos', '2018.1', 'LUIZ FELIPE PUGLIESE (32h)', 'REGULAR', 'Presencial', 'ABERTA', '5T12', 'Prédio 2 - Sala 2211', '11/12 alunos']

示例输出数据:

SUBJECT1 = ['EPRI02 - ADMINISTRAÇÃO', '2018.1', 'IGOR AZEVEDO DOS SANTOS CITTY ROSA (32h)', 'REGULAR', 'Presencial', 'ABERTA', '6T45', 'Anexo 1 - Sala 5', '90/91 alunos']

SUBJECT2 = ['ECAI06.1 - AUTOMAÇÃO DE SISTEMAS INDUSTRIAIS I', '2018.1', 'LUIZ FELIPE PUGLIESE (32h)', 'REGULAR', 'Presencial', 'ABERTA', '6M45', 'Anexo 3 - Sala 11', '13/24 alunos']

SUBJECT3 = ['ECA022.2 - Automação e Supervisão de Processos II (Prática)', '2018.1', 'LUIZ FELIPE PUGLIESE (32h)', 'REGULAR', 'Presencial', 'ABERTA', '5M23', 'Prédio 2 - Sala 2211', '9/12 alunos', '2018.1', 'LUIZ FELIPE PUGLIESE (32h)', 'REGULAR', 'Presencial', 'ABERTA', '5T12', 'Prédio 2 - Sala 2211', '11/12 alunos']

最佳答案

组织数据的一种方法是使用 collections.defaultdict

from collections import defaultdict

SUBJECT = ['EPRI02 - ADMINISTRAÇÃO', 'ECAI06.1 - AUTOMAÇÃO DE SISTEMAS INDUSTRIAIS I', 'ECA022.2 - Automação e Supervisão de Processos II (Prática)']

DETAILS = ['EPRI02 - ADMINISTRAÇÃO', '2018.1', 'IGOR AZEVEDO DOS SANTOS CITTY ROSA (32h)', 'REGULAR', 'Presencial', 'ABERTA', '6T45', 'Anexo 1 - Sala 5', '90/91 alunos',
'ECAI06.1 - AUTOMAÇÃO DE SISTEMAS INDUSTRIAIS I', '2018.1', 'LUIZ FELIPE PUGLIESE (32h)', 'REGULAR', 'Presencial', 'ABERTA', '6M45', 'Anexo 3 - Sala 11', '13/24 alunos',
'ECA022.2 - Automação e Supervisão de Processos II (Prática)', '2018.1', 'LUIZ FELIPE PUGLIESE (32h)', 'REGULAR', 'Presencial', 'ABERTA', '5M23', 'Prédio 2 - Sala 2211', '9/12 alunos', '2018.1', 'LUIZ FELIPE PUGLIESE (32h)', 'REGULAR', 'Presencial', 'ABERTA', '5T12', 'Prédio 2 - Sala 2211', '11/12 alunos']

d = defaultdict(list)
subjects = set(SUBJECT)

for item in DETAILS:
if item in subjects:
current_item = item
else:
d[current_item].append(item)

结果:

defaultdict(<class 'list'>, {'EPRI02 - ADMINISTRAÇÃO': ['2018.1', 'IGOR AZEVEDO DOS SANTOS CITTY ROSA (32h)', 'REGULAR', 'Presencial', 'ABERTA', '6T45', 'Anexo 1 - Sala 5', '90/91 alunos'],
'ECAI06.1 - AUTOMAÇÃO DE SISTEMAS INDUSTRIAIS I': ['2018.1', 'LUIZ FELIPE PUGLIESE (32h)', 'REGULAR', 'Presencial', 'ABERTA', '6M45', 'Anexo 3 - Sala 11', '13/24 alunos'],
'ECA022.2 - Automação e Supervisão de Processos II (Prática)': ['2018.1', 'LUIZ FELIPE PUGLIESE (32h)', 'REGULAR', 'Presencial', 'ABERTA', '5M23', 'Prédio 2 - Sala 2211', '9/12 alunos', '2018.1', 'LUIZ FELIPE PUGLIESE (32h)', 'REGULAR', 'Presencial', 'ABERTA', '5T12', 'Prédio 2 - Sala 2211', '11/12 alunos']})

然后您可以通过标准词典符号轻松访问与特定主题相关的详细信息。

使用字典的好处是您不必维护索引映射。要向主题添加其他相关详细信息,您只需执行 d['BAC024 - MATEMÁTICA VI'].append('Presencial')

关于python - 如果列表 X 元素存在于列表 Y 中,则在其位置之前对列表 X 进行切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49620130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com