繁体   English   中英

如何遍历列表和填充的嵌套字典Python?

[英]How to iterate through list and populated nested dictionary Python?

我正在尝试创建一个嵌套的字典,并希望使用从命令行传递到我的Python脚本的参数填充它。 我希望命令行中的每个条目都是字典中的键,并且字典将以最后一个命令行参数的值终止。 字典中的“根”键将是传递给命令行的第二个参数(在索引0中,根键将是sys.argv [1])。 我正在寻找这样的东西:

./script.py arg1 arg2 arg3 arg4 arg5

产生字典:

{arg1: {arg2: {arg3: {arg4: arg5}}}}

这是我到目前为止的内容:

parameter = {}
parameter[sys.argv[-2]] = sys.argv[-1]
for i in reversed(sys.argv[1:-2]):
    print(parameter)
    parameter[i] = parameter

结果为:

{'arg2': {...}, 'arg1': {...}, 'arg3': {...}, 'arg4': 'arg5'}

我会通过递归来做到这一点。 一个简单的例子是:

import sys

def create_dict(items):
    if len(items) == 1:
        return items[0]
    else:
        return {items[0]: create_dict(items[1:])}

if __name__ == '__main__':
    result = create_dict(sys.argv[1:])
    print(result)

此功能适用于递归解决方案。 从第一个到最后一个处理参数,并在每个步骤将当前参数映射到函数本身的结果。 您必须执行此操作,直到找到最后一个元素,然后您只需返回即可。

您正在将字典分配给它本身,因此是生成的{...}语法。 您可以尝试以下方法:

import sys
args = sys.argv[1:]
d = {}
def place(l, last):
   if not l[1:]:
      return {l[0]:last}
   else:
      return place(l[1:], {l[0]:last})
print(place(args[::-1], args[-1]))

输出:

{'arg1': {'arg2': {'arg3': {'arg4': {'arg5': 'arg5'}}}}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM