从一个列表中提取值,并从另一个列表中提取值范围,以创建字典

2024-04-20 15:49:50 发布

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

我有一张这样的清单

main_list = [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14]

我还有一张这样的名单

sec_list = [0, 5, 10]

现在,我需要这样一个输出字典:

extract_dict = {0:[1,2,3,4], 5:[6,7,8,9], 10:[11,12,13,14]}

我的字典的键是fromsec_list,值是frommain_list

我试图使用sec_list值来选择值的范围,如下所示

extract_dict = {}
for i in range(len(sec_list)-1):
    extract_dict[sec_list[i]] = main_list[sec_list[i]:sec_list[i+1]]

我得到了这样的输出,这不是我喜欢的

{0: [1, 2, 3, 4, 6], 5: [7, 8, 9, 11, 12]}

我怎样才能达到我的目标


Tags: in目标forlen字典mainextractrange
1条回答
网友
1楼 · 发布于 2024-04-20 15:49:50

您可以通过以下方法实现这一点:

main_list = [1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14]

sec_list = [0, 5, 10]

extract_dict = {}

for i, k in enumerate(sec_list):
  if i < len(sec_list) - 1:
    p = sec_list[i + 1]
    extract_dict[k] = main_list[k - i : (k - i) + p - k - 1]
                              #[k - i : p - i - 1] <== can be simplified to
  else:
    extract_dict[k] = main_list[k - i : ]

print(extract_dict)

输出:

{0: [1, 2, 3, 4], 5: [6, 7, 8, 9], 10: [11, 12, 13, 14]}

相关问题 更多 >