给定以下列表:
inp = ["arg1:", "list", "of", "args", "arg2:", "other", "list"]
如何开发这样的字典?
out = {"arg1": ["list", "of", "args"], "arg2": ["other", "list"]}
这基本上是这样的情况:
-
循环输入列表,直到找到以冒号为后缀的元素(例如
arg1:
)| ||使用它(不带冒号)在字典中创建一个值为空列表的键 - 继续循环输入列表,将每个元素添加到该键的列表值中,直到找到另一个带有冒号的元素
- 冲洗并重复,直到所有元素都以这种方式处理
- 其他示例是:
这感觉像
inp = ["test:", "one", "help:", "two", "three", "four"]
out = {"test": ["one"], "help": ["two", "three", "four"]
---
inp = ["one:", "list", "two:", "list", "list", "three:", "list", "list", "list"]
out = {"one": ["list"], "two": ["list", "list"], "three": ["list", "list", "list"]}
应该 相对简单(尽管可能不是一句话!)但是我就是无法理解它。 任何建议表示赞赏。
Any advice appreciated.
当然,以下是如何在 Python 中执行此操作:
def process_list(inp):
out = {}
current_key = None
for item in inp:
if item.endswith(":"):
current_key = item[:-1] # 删除冒号
out[current_key] = []
elif current_key:
out[current_key].append(item)
return out
inp = ["arg1:", "list", "of", "args", "arg2:", "other", "list"]
out = process_list(inp)
print(out)
inp = ["test:", "one", "help:", "two", "three", "four"]
out = process_list(inp)
print(out)
inp = ["one:", "list", "two:", "list", "list", "three:", "list", "list", "list"]
out = process_list(inp)
print(out)
此代码执行以下操作:
-
初始化 一个空字典
out
和一个名为current_key
的变量,最初设置为None
以跟踪当前键。 -
迭代 输入列表
inp
。 -
对于每个
item
: -
检查
item
是否以冒号 (:
) 结尾。 -
如果是
,则它是一个新键。
-
从项目中删除冒号以获取
current_key
。 -
在
out
中使用current_key
创建一个新条目,其值为一个空列表[]
。
-
从项目中删除冒号以获取
-
否则 ,如果
current_key
不是None
(表示我们有了一个活动键):-
将
item
附加到out
中current_key
对应的列表中。
-
将
-
返回 生成的字典
out
。
此代码有效地将的输入列表解析为所需格式的字典。
标签:python,python-3.x From: 78794566