给出以下列表:
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"]}
这感觉应该相对简单(尽管可能不是一句台词!),但我就是无法理解它。
任何建议表示赞赏。
不需要任何递归,只需一项一项地取出,如果有冒号则更改键:
inp = ['arg1:', 'list', 'of', 'args', 'arg2:', 'other', 'list']
out = {}
key = None # default key
for item in inp:
if item.endswith(':'):
key = item
continue
out.setdefault(key, []).append(item)
输出:
{'arg1:': ['list', 'of', 'args'], 'arg2:': ['other', 'list']}
我不清楚你如何实现这个递归。
您在寻找这样的东西吗?
d = {}
for i in inp:
if i.endswith(':'):
k = re.replace(':$', '', k)
continue
d[k] = [i] if k not in d else d[k] + [i]