如何遍历列表并将一些变量分配为键,将一些变量分配为值?

How to loop through list and assign some variables as a key and some as a value?

你好,

我很难弄清楚如何遍历列表并将一些分配为键,一些分配为值。我已经在 Stack Overflow 中搜索了一段时间,但找不到类似这样的问题,所以我发帖了。

情况如下:

my_list = ['start_here', 'a1', 'b2', 'a3', 'start_here_2', 'b1', 'a2', 'start_here_3', 'a1', 'b2', 'a3', 'b4']

(它可以继续到 start_here_4、start_here_5 等任意数量的 a# 或 b#)

这是我想要的输出:

my_dict = {'start_here': ['a1', 'b2', 'a3'], 'start_here_2': ['b1', 'a2'], 'start_here_3': ['a1', 'b2', 'a3', 'b4']

我不知道我是否应该将我的原始列表拆分为 3 或 4 或更多,然后将索引 0 设为键,然后是一个变量列表作为值,或者是否有绕过的方法然后立即从原始列表创建字典。

提前谢谢你,我有点新!

像这样,例如:

my_list = ['start_here', 'a1', 'b2', 'a3', 'start_here_2', 'b1', 'a2', 'start_here_3', 'a1', 'b2', 'a3', 'b4']
key = None
my_dict = {}
for v in my_list:
    if v.find('start_here') == 0:
        key = v
        my_dict[key] = []
    else:
        my_dict[key].append(v)
print(my_dict)

输出:

{'start_here': ['a1', 'b2', 'a3'], 'start_here_2': ['b1', 'a2'], 'start_here_3': ['a1', 'b2', 'a3', 'b4']}

find 方法识别每个以 start_here 开头的列表元素,将该元素保存为新键,并使用该键和空列表向 my_dict 添加一个条目作为该值,然后将后续列表元素附加到该键的列表值,直到遇到下一个键(即以 start_here 开头的下一个列表元素)。

更新:下面显示了使用 find() 的替代方案(可能更好)。

(1) 假设列表中以 start_here 开头的任何字符串都被视为键(在评论中归功于@Jasmijn):

key = None
my_dict = {}
for v in my_list:
    if v.startswith('start_here'):
        key = v
        my_dict[key] = []
    else:
        my_dict[key].append(v)

(2) 假设列表中包含 start_here 作为子串的任何字符串都被视为键:

key = None
my_dict = {}
for v in my_list:
    if 'start_here' in v:
        key = v
        my_dict[key] = []
    else:
        my_dict[key].append(v)