Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的词典词典!_Python - Fatal编程技术网

python中的词典词典!

python中的词典词典!,python,Python,如何用python创建一个值也是字典的字典?基本上,我的问题是,我有以下列表: ['http://a11y.in/a11ypi/idea/a11y_firesafety.html', ['lang:hi', 'lang:kn'], ['a11y_firesafety.html:div1', 'a11y_firesafety.html:div1'], ['hi', 'kn'] ] 我想把它转换成: {'http://a11y.in/a11ypi/idea/a11y_firesafety.h

如何用python创建一个值也是字典的字典?基本上,我的问题是,我有以下列表:

['http://a11y.in/a11ypi/idea/a11y_firesafety.html',
 ['lang:hi', 'lang:kn'],
 ['a11y_firesafety.html:div1', 'a11y_firesafety.html:div1'],
 ['hi', 'kn']
]
我想把它转换成:

{'http://a11y.in/a11ypi/idea/a11y_firesafety.html':
  {'lang:hi':
     {'lang:kn':
        {'a11y_firesafety.html:div1':
           {'a11y_firesafety.html:div1': {'hi', 'kn'}}}}}}
有人能给我一个建议吗?我试着使用多维字典,但没有用。请帮忙

试试这个:

def forget_torpedoes(mylist):
    return reduce(lambda acc, x: {x : acc}, reversed(mylist))
这将适用于以下简单列表:

In [9]: forget_torpedoes( [5, 6, 7, 8] )
Out[9]: {5: {6: {7: 8}}}

我意识到这并不能回答(所有)你的问题,因为你有嵌套的列表。但话说回来,它应该能帮你解决大部分问题:)

根据phooji的答案,你可以使用类似于itertools.chain的函数来处理嵌套列表

def forget_torpedoes(mylist):
    return reduce(lambda acc, x: {x : acc}, reversed(mylist))

def chain(iterable):
    for it in iterable:
        if isinstance(it, str):
            yield it
        else:
            for element in it:
                yield element

print forget_torpedoes(tuple(chain(nested_list))) 
像这样:

>>> l=['http://a11y.in/a11ypi/idea/a11y_firesafety.html',
...  ['lang:hi', 'lang:kn'],
...  ['a11y_firesafety.html:div1', 'a11y_firesafety.html:div1'],
...  ['hi', 'kn']
... ]
>>> d={}
>>> d[l[0]]=reduce(lambda val, key : {key : val}, reversed( sum(l[1:],[]) ))
>>> d
{'http://a11y.in/a11ypi/idea/a11y_firesafety.html': 
  {'lang:hi': 
     {'lang:kn': 
        {'a11y_firesafety.html:div1': 
           {'a11y_firesafety.html:div1': 
              {'hi': 'kn'}}}}}}

公平的读者,我将把它留给你,让你向你的老师解释一下……

从一个例子来看,如何建立这本词典并不十分清楚。再加上示例中最后一个“dictionary”
{'hi',kn'}
在语法上没有意义。这应该是一个列表吗?
{'hi',kn'}
不是一个dict,最多在较新的Python版本(那些具有set文本的版本)中是一个set。此外,问题描述非常模糊,您几乎没有提供任何关于您尝试了什么以及如何失败的信息。@user567797:我同意这里的其他人的观点——您的问题可能会更清楚一些,我猜
{'hi',kn'}
应该读
{'hi':'kn'
}。请考虑<代码>编辑>代码>问题更加清晰。