在嵌套字典中迭代列表的循环

Loop that iterate lists in nested dictionaries

我正在尝试构建一个循环来遍历包含列表的字典。

对于主词典 (dict_all) 中的每个子词典,我想遍历所有列表,以便减去列表的第一个元素(仅 'time' 列)到相应列表的每个元素。 为了提供一些上下文,下面是嵌套字典的结构:

dict_all = { 'dict_20' : {"P1S1": df_list_20[0], "P2S1": df_list_20[1], "P3S1": df_list_20[2], "P4S1": df_list_20[3], 
           "P5S1": df_list_20[4], "P6S1": df_list_20[5], "P7S1": df_list_20[6], "P8S1": df_list_20[7],
           "P9S1": df_list_20[8], "P10S1": df_list_20[9], "P1S2": df_list_20[10], "P2S2": df_list_20[11],
           "P3S2": df_list_20[12], "P4S2": df_list_20[13], "P5S2": df_list_20[14], "P6S2": df_list_20[15],
           "P7S2": df_list_20[16], "P8S2": df_list_20[17], "P9S2": df_list_20[18], "P10S2": df_list_20[19]},
           
           'dict_40' : {"P1S1": df_list_40[0], "P2S1": df_list_40[1], "P3S1": df_list_40[2], "P4S1": df_list_40[3], 
           "P5S1": df_list_40[4], "P6S1": df_list_40[5], "P7S1": df_list_40[6], "P8S1": df_list_40[7],
           "P9S1": df_list_40[8], "P10S1": df_list_40[9], "P1S2": df_list_40[10], "P2S2": df_list_40[11],
           "P3S2": df_list_40[12], "P4S2": df_list_40[13], "P5S2": df_list_40[14], "P6S2": df_list_40[15],
           "P7S2": df_list_40[16], "P8S2": df_list_40[17], "P9S2": df_list_40[18], "P10S2": df_list_40[19]}}

(为了举例,我只拿了两个嵌套字典,但我总共有六个)

这是二级词典中列表的示例(每个列表的长度不同):

        time  velocity
0   10.755616  0.059656
1   10.776415  0.131182
2   10.796519  0.232206
3   10.816632  0.355268
4   10.836832  0.531719
5   10.857092  0.751184
6   10.877205  0.964944
7   10.897274  1.136908
8   10.917387  1.333836
9   10.937439  1.553230
10  10.957535  1.726184
11  10.977587  1.870065
12  10.997622  2.049414
13  11.017821  2.211132
14  11.037908  2.248697
15  11.057977  2.261453
16  11.078099  2.244839
17  11.098168  2.116589
18  11.118351  1.981216
19  11.138455  1.774250
20  11.158568  1.499906
21  11.178724  1.250161
22  11.198863  1.002039
23  11.219028  0.751948
24  11.239314  0.486585
25  11.259696  0.264919

循环的全部目的是针对每个列表,使 'time' 列从“0”开始,同时保持每行之间的时间间隔相同。

我设法编写了以下循环来迭代一个孤立的列表,并给出了我想要的输出:

for i in range(len(dfList_20[0]['time'])): 
    dfList_20[0]['time'][:] = dfList_20[0]['time'][:] - dfList_20[0]['time'][0]

当然,在列表级别进行迭代不会非常有效,因为我需要 240 行代码才能完全达到所需的输出..

提前感谢大家的宝贵时间和解决方案! :)

使用嵌套循环

for nested_dict in dict_all.values():
    for dflist in nested_dict.values():
        dflist['time'][:] = dflist['time'][:] - dflist['time'][0]