Python – 通过前缀分组将列表转换为键值列表
给定一个列表,将其转换为连续的键值列表,按前缀分组。
Input : test_list = [“GFG-1”, 4, 6, “GFG-2”, 3, “GFG-3”, 9, 2], temp = “GF”
Output : {‘GFG-1’: [4, 6], ‘GFG-2’: [3], ‘GFG-3’: [9, 2]}
Explanation : All grouped till next prefix.
Input : test_list = [“MRK-1”, 4, 6, “MRK-2”, 3, “MRK-3”, 9, 2], temp = “MR”
Output : {‘MRK-1’: [4, 6], ‘MRK-2’: [3], ‘MRK-3’: [9, 2]}
Explanation : All grouped till next prefix, “MR”.
方法:使用 groupby() + startswith() + lambda
上述功能的组合可以用来解决这个问题。在此,我们使用 groupby() 和 lambda 函数通过前缀对所有元素进行分组,以帮助执行分组的前缀分离。
Python3
# Python3 code to demonstrate working of
# Convert List to key-value list by prefic grouping
# Using groupby() + startswith() + lambda
from itertools import groupby
# initializing list
test_list = ["GFG-1", 4, 6, 7, "GFG-2", 2, 3, "GFG-3", 9, 2, 4, 6]
# printing original list
print("The original list : " + str(test_list))
# initializing prefix
temp = "GFG"
res = {}
# extracting result from grouped by prefix
for key, val in groupby(test_list, lambda ele: str(ele).startswith(temp)):
# checking for existing key
if key:
k = next(val)
else:
res[k] = list(val)
# printing result
print("The constructed dictionary : " + str(res))
输出
The original list : ['GFG-1', 4, 6, 7, 'GFG-2', 2, 3, 'GFG-3', 9, 2, 4, 6]
The constructed dictionary : {'GFG-1': [4, 6, 7], 'GFG-2': [2, 3], 'GFG-3': [9, 2, 4, 6]}