For 循环将字符串列表附加到嵌套列表中的列表

For loop to append list of strings to lists within nested list

提问人:Imane Kwik 提问时间:12/14/2022 最后编辑:Imane Kwik 更新时间:12/16/2022 访问量:147

问:

[在此处输入图像描述][1]我有一个数据集,它是 3 个嵌套列表(称为“患者”)的列表。每个嵌套列表都包含一定数量的观测值。第一个嵌套列表包含 119 个观测值,第二个列表包含 9 个观测值,第三个列表包含 6 个观测值。这些观测值是包含一些键(如“开始时间”和“结束时间”)的字典。

现在我想创建一个 for 循环来创建一个包含 3 个嵌套列表的新列表。我希望每个新的嵌套列表只包含该特定患者的开始时间。因此,1 个列表包含 3 个不同大小的列表(119、9 和 6)

但是,当我尝试这样做时,我得到一个包含 3 个嵌套列表的列表,这些列表都具有相同的大小,所有嵌套列表都包括所有 134 个观测值(119+9+6,称为“start_times”)。有人可以帮我解决这个问题吗?

`

start_times = [[] for i in range(3)]

for a in patients:
    for b in a:
        for c in range(3):
            start_times[c].append(b['start'])

' [1]:https://i.stack.imgur.com/0us5J.png [2]:https://i.stack.imgur.com/yHEIl.png

python json for循环 嵌套循环 嵌套列表

评论

0赞 Jasmijn 12/15/2022
欢迎来到 Stack Overflow!将来,请确保输入和输出(预期和实际)以文本形式包含在问题中。这使人们更容易帮助您,因为他们不必猜测正在发生的事情。
0赞 Imane Kwik 12/15/2022
@Jasmijn 谢谢!你的意思是而不是提供图片吗?因为我的输入是“患者”,但这太大了,无法以文本形式提供。
0赞 Jasmijn 12/15/2022
是的,而不是图像形式。通常最好(出于隐私和输入大小的原因)提供虚假数据,以代表您实际使用的数据类型。

答:

0赞 Jasmijn 12/15/2022 #1

为此,您需要使用嵌套列表推导式。为了清楚起见,我更改了变量名称,并添加了空格以使结构清晰:

start_times = [
    [
        observation['start']
        for observation
        in patient
    ]
    for patient
    in patients
]

评论

0赞 Imane Kwik 12/15/2022
Jasmijn的回答对我有用。但是,我想对字典中的键“timeserieslabel”执行完全相同的操作。这个键不是像键“start”和“end”那样的字符串,而是另一个列表。例如,列表 ['其他工件']。当我点击它时,我得到一个名为“其他人工制品”的字符串。因此,我想要一个名为“labels”的列表,其中包含 3 个嵌套列表。我希望这些嵌套列表包含字符串,就像“start_time”向量一样。当我使用 Jasmijn 的方法时,嵌套列表包含新列表而不是字符串。这需要额外的步骤
0赞 Jasmijn 12/15/2022
我建议为此写一个新问题
0赞 Upender Kalwa 12/15/2022 #2

您可能希望改为执行此操作:

start_times = [[] for i in range(3)]
for idx, sublist in enumerate(patients):
    for record in sublist:
        start_times[idx].append(record["start"])

评论

0赞 Jasmijn 12/15/2022
[] * 3 == []因此,这不能按预期工作。[[] * 3] == [[]]