gpt4 book ai didi

Python:根据值/条件创建子列表

转载 作者:行者123 更新时间:2023-11-30 21:59:00 28 4
gpt4 key购买 nike

作为线性程序的结果,我从字典中得到一个嵌套列表,如下所示:

lst = [['a0', 1, 'x_01', 'p_01', 39],
['a0', 1, 'x_01', 'p_02', 19],
['a0', 1, 'x_02', 'p_01', 10],
['a0', 1, 'x_02', 'p_02', 5],
['a1', 1, 'x_01', 'y_01', 'p_01', 5],
['a1', 1, 'x_01', 'y_01', 'p_02', 5],
['a1', 1, 'x_02', 'y_01', 'p_02', 5],
['a1', 1, 'x_02', 'y_01', 'p_02', 5]]

任何类型的“a”都表示针对一系列集合(例如,1、“x_01”、“p_01”等)求解​​的变量,其值由列表的最后一个元素表示。

现在的任务是创建仅包含相同变量列表的子列表。 (在下一步中,它们将被传递到 pdf.df)列表列表可能如下所示或类似的内容:

new_lst = [[['a0', 1, 'x_01', 'p_01', 39],
['a0', 1, 'x_01', 'p_02', 19],
['a0', 1, 'x_02', 'p_01', 10],
['a0', 1, 'x_02', 'p_02', 5]],
[['a1', 1, 'x_01', 'y_01', 'p_01', 5],
['a1', 1, 'x_01', 'y_01', 'p_02', 5],
['a1', 1, 'x_02', 'y_01', 'p_02', 5],
['a1', 1, 'x_02', 'y_01', 'p_02', 5]]]

到目前为止我尝试过的是:

st0 = list(set([x[0] for x in lst]))

获取所有唯一变量。

还有这个,但它显然不起作用:

n = [x for x in lst for i in st0 if x[0]==i]

我在这里尝试的是基于这样的事情:

n1 = [x for x in lst if x[0]==st0[0]]
n2 = [x for x in lst if x[0]==st0[1]]
ii = [n1,n2]

根据模型大小,我有 10 个、20 个或更多个不同维度的不同变量。此外,模型需要运行多次来测试不同的参数。

硬编码是可能的,但不是必需的。如果有人有好主意,请随时帮助我。

最佳答案

使用itertools.groupby:

from itertools import groupby

lst = [['a0', 1, 'x_01', 'p_01', 39],
['a0', 1, 'x_01', 'p_02', 19],
['a0', 1, 'x_02', 'p_01', 10],
['a0', 1, 'x_02', 'p_02', 5],
['a1', 1, 'x_01', 'y_01', 'p_01', 5],
['a1', 1, 'x_01', 'y_01', 'p_02', 5],
['a1', 1, 'x_02', 'y_01', 'p_02', 5],
['a1', 1, 'x_02', 'y_01', 'p_02', 5]]

new_lst = []
s_lst = sorted(lst, key=lambda x: x[0])
for k, v in groupby(s_lst, key=lambda x: x[0]):
new_lst.append(list(v))

print(new_lst)

输出:

[[['a0', 1, 'x_01', 'p_01', 39], 
['a0', 1, 'x_01', 'p_02', 19],
['a0', 1, 'x_02', 'p_01', 10],
['a0', 1, 'x_02', 'p_02', 5]],
[['a1', 1, 'x_01', 'y_01', 'p_01', 5],
['a1', 1, 'x_01', 'y_01', 'p_02', 5],
['a1', 1, 'x_02', 'y_01', 'p_02', 5],
['a1', 1, 'x_02', 'y_01', 'p_02', 5]]]

关于Python:根据值/条件创建子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54725158/

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