python中的词典词典!
如何用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
['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'
}。请考虑<代码>编辑>代码>问题更加清晰。